我有一个方形的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/

10-11 16:18