c++ - 如何使用 std::shuffle 随机排列具有唯一指针的 vector ?

标签 c++ algorithm c++11 random shuffle

我正忙着编写纸牌游戏。对于这个纸牌游戏,我想洗牌。牌组是一个由唯一指针组成的 vector ,看起来像这样:

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

我尝试使用 shuffle 函数从中获取随机序列,但出现以下错误:“函数模板“std::shuffle”的实例与参数 vector “不匹配”。查看下面的代码块以获取参数.

std::shuffle(_buildings_deck.begin(), _buildings_deck.back(), std::default_random_engine{});

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

最佳答案

std::shuffle() 期望像 std::vector 那样的随机访问迭代器。您必须用 std::vector 替换 std::list。

关于c++ - 如何使用 std::shuffle 随机排列具有唯一指针的 vector ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41783531/

相关文章:

c++ - Qt 获取 QWidget 来反射光线

c++ - 'v8::Value::ToNumber': 被宣布弃用

c++ - 用于游戏开发的二维 vector 建模

algorithm - 解决涉及 Theta 符号的时间复杂度的重复出现

c++ - 这些方法中哪些是可能的/更有效的

c++ - 铿锵错误 : non-type template argument refers to function that does not have linkage -- bug?

c++成员函数名称与标准c库不明确

algorithm - 关于随时算法

java - 如何用Java求解方程组?

对和元组的piecewise_construct 的C++11 用例?