c++ - 如何获取二维原生数组的迭代器

标签 c++ multidimensional-array iterator

一开始我在寻找一种方法将整个数组初始化为一个特定的值。 虽然我知道memset()<cstring>可以做到这一点,我想通过更 C++ 的方式来实现。

然后我开始了解std::fill()可以是一种处理单维数组的方法

const int SIZE = 10;
int arr[SIZE];
std::fill(std::begin(arr), std::end(arr), 1);

但这在使用二维或多维数组时不起作用。 如何获取多维数组的迭代器?

提前致谢。

最佳答案

二维数组在内存中是连续的,所以你可以这样做

int arr[ROWS][COLS];
const size_t total_size = ROWS*COLS;
std::fill(&a[0][0], &a[0][0]+ total_size, 1);

其中 total_size 是元素的总数。

关于c++ - 如何获取二维原生数组的迭代器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25915394/

相关文章:

c++ - std::vector 是一个非常规类型,因为它的赋值运算符移动了它的成员的位置

c++ - 如何在 C++ 类函数中将 std::map 作为默认构造函数参数传递

php - 在 CakePHP 的 find 'id' ) 方法中使用 ('all' 设置索引

c++ - 为什么我不能在c++中 `+1`的迭代器中使用 `map`?

c++ - 将迭代器变成标量索引?

java - 如何返回二叉树中序遍历的迭代器?

c++ - 在 QDialog 中使用 QGridLayout 定位 QPushButton?

c# - 在这种情况下,为什么 .NET 比 C++ 快?

javascript - react : Filter multidimensional array object by value in component

java - 如何从 Java 中的二维对象数组中提取数字