如何使用std :: shuffle以随机顺序混合带有唯一指针的向量?

use*_*161 0 c++ random algorithm shuffle c++11

我正忙着编写纸牌游戏.对于这个纸牌游戏,我想要洗牌.套牌是一个独特的指针矢量,看起来像这样:

std::vector<std::unique_ptr<Cards>> _deck;
Run Code Online (Sandbox Code Playgroud)

我尝试使用shuffle函数得到一个随机序列但是我得到了以下错误:"没有函数模板实例"std :: shuffle"匹配参数向量".".查看下面的代码块以获取参数.

std::shuffle(_buildings_deck.begin(), _buildings_deck.back(), std::default_random_engine{});
Run Code Online (Sandbox Code Playgroud)

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

iva*_*nys 5

std :: shuffle()期望随机访问迭代器为std :: vector.你必须用std :: vector替换std :: list.