重置矢量的二维阵列

Reset 2D array of vectors

本文关键字:二维 阵列      更新时间:2023-10-16

我有一个用声明的2D数组

vector<int> array[10][10];

清除阵列中任何数据的最快方法是什么?我试过:

memset(array, 0, sizeof(array));

但这不起作用。

感谢

这是一个二维矢量数组。换句话说,它基本上是一个三维阵列,具有三维动态特性。如果你想创建一个动态的2D阵列,你可以这样做:

vector<vector<int> > array(10, vector<int>(10));

要清除:

array.clear();
array.resize(10, vector<int>(10));

如果你想坚持你的阵列,你可以用一个循环来清除它:

for(unsigned int i = 0; i < 10; i++)
    for(unsigned int j = 0; j < 10; j++)
        array[i][j].clear();

您需要遍历数组的2D部分,并清除每个向量。最快的方式应该看起来像:

for(unsigned int x = 0; x != 10; ++x) {
  for(unsigned int y = 0; y != 10; ++y) {
    array[x][y].resize(0);
  }
}