初始化构造函数C++中为零的 2D 数组

Initialize a 2D array with zero in the constructor C++

本文关键字:2D 数组 构造函数 C++ 初始化      更新时间:2023-10-16
初始化

构造函数中为 0 的大型 2D 数组的最佳方法是什么?如果可能的话,我想这样做而不必遍历我的数组。

或者,使用 std::vector 而不是数组。

std::vector<std::vector<int>> vec2d(100, std::vector<int>(50, 0));

生成的二维向量将包含 100 个向量,每个向量包含 50 个零。

使用memset。例如:

int a[10][10]; 
memset(a, 0, sizeof(int)*10*10);

不确定如何分配"2D"数组。但这基本上是我初始化任何大块数据的方式。

int data[10000];
memset(data,0,sizeof(int)*10000);

无论是 1D、2D、3D、xxD 数组还是任何其他结构,您都可以执行以下操作:

memset(pointer_to_your_object, 0, sizeof(your_object));

但是memset通常可以使用任何值设置内存区域,因此,如果只是将其设置为零,则可以使用那里的一些宏 - 它们都被称为Zeromem,ZeroMemory等:

msdn 上的零内存

这之前

已经为一维数组回答过,我假设 2D 也有类似的问题?

对于构造函数:

 class MyClass {
   int a[100];
   MyClass() : a() // all zeros
   {
     // stuff
   }
 };