在构造函数C ++中初始化零数组为零

时间:2013-11-08 19:33:20

标签: c++ arrays

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

5 个答案:

答案 0 :(得分:4)

或者,使用std::vector代替数组。

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

得到的二维向量将包含100个向量,每个向量包含50个零。

答案 1 :(得分:2)

使用memset。例如:

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

答案 2 :(得分:1)

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

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

答案 3 :(得分:1)

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

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

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

ZeroMemory on msdn

答案 4 :(得分:1)

对于1D阵列,我们之前已经回答过这个问题,我假设2D类似的东西?

对于构造函数:

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