如何使用 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。