我有一个方形的2dvector(网格),我想在其中插入一个零的数字(“ conc”)。
然后,对向量进行混洗以分配零。
(假设网格矢量的大小为10x10)。
1)我尝试了:
int conc=1;
for (size_t i=0, max=conc; i!=max;i++){
grid.erase(grid.begin()+1);
for (size_t j=0,max=grid.size();j!=max; j++)
grid[i][j]=0;
}
random_shuffle(grid.begin(),grid.end());
问题是上面的代码我收到了10个零(网格大小= 10x10)而不是1(现在conc = 1,所以我想要1个零)。
这十个零全都在一行中。我想将零的数量分布在网格中的任何位置。
我想插入1个零(conc)。
最佳答案
您可以使用如下数组:
arr[LINES*COLUMNS]
而不是
arr[i][j]
作为访问
arr[i*COLUMNS+j]
使用这种方法,一切都是线性的,假设您希望这种行为用于混洗...
更新
如约阿希姆·皮勒伯格(Joachim Pileborg)所建议的amd ...阅读有关random_shufle的更多信息...
关于c++ - 在网格中的任何位置分布多个零,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20199328/