在构造函数中用0初始化大型2D数组的最佳方法是什么?如果可能的话,我想这样做而不必遍历我的数组。
答案 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等:
答案 4 :(得分:1)
对于1D阵列,我们之前已经回答过这个问题,我假设2D类似的东西?
对于构造函数:
class MyClass {
int a[100];
MyClass() : a() // all zeros
{
// stuff
}
};