2

コンストラクタで大きな 2D 配列を 0 で初期化する最良の方法は何ですか? 可能であれば、配列をループせずにこれを行いたいです。

4

5 に答える 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 などのように呼び出されます:

msdn の ZeroMemory

于 2013-11-08T19:43:13.710 に答える