如何使用 std::shuffle 以随机顺序对具有唯一指针的向量进行洗牌

How can I shuffle a vector with unique pointers in a random sequence with std::shuffle?

本文关键字:指针 唯一 向量 shuffle std 何使用 随机 顺序      更新时间:2023-10-16

我正忙着编写纸牌游戏。对于这个纸牌游戏,我想洗牌。甲板是独特指针的向量,如下所示:

std::vector<std::unique_ptr<Cards>> _deck;

我试图从中获取带有 shuffle 函数的随机序列,但出现以下错误:"没有函数模板"std::shuffle"的实例与参数向量匹配"。查看下面的代码块以获取参数。

std::shuffle(_buildings_deck.begin(), _buildings_deck.back(), std::default_random_engine{});
据我所知,我

使用的参数是正确的,我仍然需要选择一个随机引擎,但这应该不是问题。所以我想知道是否可以使用 shuffle 随机排序唯一指针的向量,如果是的话,如何排序?

std::shuffle() 期望随机访问迭代器,就像 std::vector 一样。你必须将 std::list 替换为 std::vector。