2

在构造函数中用 0 初始化大型二维数组的最佳方法是什么?如果可能的话,我想这样做而不必遍历我的数组。

4

5 回答 5

4

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

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

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

于 2013-11-08T19:43:05.933 回答
3

使用 memset。例如:

int a[10][10]; 
memset(a, 0, sizeof(int)*10*10);
于 2013-11-08T19:37:00.337 回答
1

不知道你是如何分配你的“2D”数组的。但这基本上是我初始化任何大数据块的方式。

int data[10000];
memset(data,0,sizeof(int)*10000);
于 2013-11-08T19:36:04.567 回答
1

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

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

但是memset通常可以使用任何值设置内存区域,所以如果它只是设置为零,您可以使用那里的一些宏 - 它们都被称为 zeromem、zeromemory 等:

msdn 上的零内存

于 2013-11-08T19:43:13.710 回答
1

之前已经回答过一维数组,我假设二维数组类似?

对于构造函数:

 class MyClass {
   int a[100];
   MyClass() : a() // all zeros
   {
     // stuff
   }
 }; 
于 2013-11-08T19:43:57.597 回答