在构造函数中用 0 初始化大型二维数组的最佳方法是什么?如果可能的话,我想这样做而不必遍历我的数组。
问问题
2904 次
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 等:
于 2013-11-08T19:43:13.710 回答
1
之前已经回答过一维数组,我假设二维数组类似?
对于构造函数:
class MyClass {
int a[100];
MyClass() : a() // all zeros
{
// stuff
}
};
于 2013-11-08T19:43:57.597 回答