c++ - 在网格中的任何位置分布多个零

标签 c++ arrays vector

我有一个正方形 2dvector(网格),我想在其中插入一个数字(“conc”)为零。 然后,打乱 vector 以分配零。 (假设网格 vector 的大小为 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 个(现在浓度 = 1,所以我想要 1 个零)。

而且这十个零都排成一行。我想把零的个数分布在网格的任意位置。

我想插入 1 个零(conc)。

最佳答案

你可以使用这样的数组:

arr[LINES*COLUMNS] 

而不是

arr[i][j]

访问为

arr[i*COLUMNS+j]

使用这种方法,一切都是线性的,假设您希望这种行为用于您的洗牌...

更新

amd 正如 Joachim Pileborg 所建议的那样...阅读有关 random_shufle 的更多信息...

关于c++ - 在网格中的任何位置分布多个零,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20199328/

相关文章:

c++ - 未知大小/参数类型的元组

c++ - 警告 C4661 :no suitable definition provided for explicit template instantiation request

javascript - 使用 JavaScript 从服务器响应创建 JSON

C++ 在不重新分配的情况下删除 vector 末尾的一部分

c# - C++ 风格编码

c++ - std::move_if_noexcept 的基本原理仍在 move 抛出仅 move 类型?

python - 总结数组内所有不同形状的 numpy 子数组的所有值

java - 如何计算二维数组的频率

r - 查找向量中最长的重复元素

c++ - 对字符串使用 set_union