コンストラクタで大きな 2D 配列を 0 で初期化する最良の方法は何ですか? 可能であれば、配列をループせずにこれを行いたいです。
質問する
2904 次
5 に答える
4
std::vector
または、配列の代わりにa を使用します。
std::vector<std::vector<int>> vec2d(100, std::vector<int>(50, 0));
結果の 2 次元ベクトルには 100 個のベクトルが含まれ、それぞれに 50 個のゼロが含まれます。
于 2013-11-08T19:43:05.933 に答える
1
これは1D配列について以前に回答されていますが、2Dでも同様のことを想定していますか?
コンストラクターの場合:
class MyClass {
int a[100];
MyClass() : a() // all zeros
{
// stuff
}
};
于 2013-11-08T19:43:57.597 に答える
1
1D、2D、3D、xxD 配列、またはその他の構造のいずれであっても、次の操作を実行できます。
memset(pointer_to_your_object, 0, sizeof(your_object));
しかし、一般的にmemsetは任意の値でメモリ領域を設定できるため、ゼロに設定するだけの場合は、そこにあるマクロのいくつかを使用できます-それらはすべて zeromem、zeromemory などのように呼び出されます:
于 2013-11-08T19:43:13.710 に答える