如何使用 std::shuffle 以随机序列随机排列具有唯一指针的向量?
How can I shuffle a vector with unique pointers in a random sequence with std::shuffle?
我正忙着编写纸牌游戏。对于这个纸牌游戏,我想洗牌。甲板是唯一指针的向量,看起来像这样:
std::vector<std::unique_ptr<Cards>> _deck;
我尝试使用 shuffle 函数从中获取随机序列,但出现以下错误:"No instance of function template "std::shuffle" 匹配参数向量"."。查看下面的代码块以了解参数.
std::shuffle(_buildings_deck.begin(), _buildings_deck.back(), std::default_random_engine{});
据我所知,我使用的参数是正确的,我仍然需要选择一个随机引擎,但这应该不是问题。所以我想知道是否可以使用 shuffle 随机排序唯一指针的向量,如果可以的话如何?
std::shuffle() 需要像 std::vector 那样的随机访问迭代器。您必须将 std::list 替换为 std::vector。
我正忙着编写纸牌游戏。对于这个纸牌游戏,我想洗牌。甲板是唯一指针的向量,看起来像这样:
std::vector<std::unique_ptr<Cards>> _deck;
我尝试使用 shuffle 函数从中获取随机序列,但出现以下错误:"No instance of function template "std::shuffle" 匹配参数向量"."。查看下面的代码块以了解参数.
std::shuffle(_buildings_deck.begin(), _buildings_deck.back(), std::default_random_engine{});
据我所知,我使用的参数是正确的,我仍然需要选择一个随机引擎,但这应该不是问题。所以我想知道是否可以使用 shuffle 随机排序唯一指针的向量,如果可以的话如何?
std::shuffle() 需要像 std::vector 那样的随机访问迭代器。您必须将 std::list 替换为 std::vector。