【发布时间】:2014-02-18 05:49:30
【问题描述】:
我有一个 2D 对象向量,我想对它们进行随机播放。这个的语法是什么?
class node{
public:
string hex_type = "E";// empty to start
int Xcoordinate;
int Ycoordinate;
vector<reference_wrapper<node>> neighbors;
};
nodes = vector<vector<node> >(size, vector <node>(size));//filled elsewhere
random_shuffle(&nodes[0][0], &nodes[size-1][size-1]);
这会生成一个错误,即访问冲突读取
【问题讨论】:
-
让我们从数组开始。它是 real 二维数组,而不是一些捏造的指针数组吗?如果是这样,你的第二次尝试就结束了。
-
这是一个真正的二维对象数组,是的,不是指针。
-
第二次尝试有什么问题?
-
它实际上并没有做任何事情。我用 srand(time(NULL)) 播种
-
就其价值而言,您可能想使用
std::shuffle而不是std::random_shuffle。std::shuffle是在 C++11 中添加的,从 C++14 开始,std::random_shuffle似乎将被正式弃用。