如何获取2d本机数组的迭代器

时间:2014-09-18 14:26:17

标签: 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);

但是当使用2d或多维数组时,这不起作用。 如何获得多维数组的迭代器?

提前致谢。

1 个答案:

答案 0 :(得分:1)

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

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

其中total_size是元素总数。