ベクトルをゼロに初期化するC ++ / C ++ 11


117

私はC ++ 11で、変数をゼロに初期化する機能を追加したことを知っています

double number = {}; // number = 0
int data{};  // data = 0

std::vector固定長のをすべてゼロに初期化する同様の方法はありますか?


13
std::vector<int> vec(42);
avakar 2012年

9
ところで、これはc ++ 11の新機能ではありません。以前のバージョンでもこれを実行できます
balki

回答:


219

そのための初期化リストは必要ありません。

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);

37
0を明示的に述べる必要はありませんか?ちょうどvector(length)働くべきですか?
Daniel Gratzer、

37
@jozefg:はい、機能しますが、コードに何を実行させたいかを明示することに害はありません。
ronag 2012年

1
@ronag私が自分で答えを書いたのは、intが彼が使用している型ではない場合、この場合は明示的であることは必ずしも良い例ではないためです。一般的なプログラミングはc ++で利用できますが、引数を完全に省略できることが通知されたので、私の答えを削除しました。
Johannes Schaub-litb 2012年

1
ronagが示したように、宣言で他の値を指定しない限り、ベクトルは自動的に0に初期化されます。
ニコス2017

ZEROforループを使用せずに、効率的にグローバルベクトルのすべての要素を再初期化することは可能ですか??????
Ankit Mishra

0

構造体、クラス、またはユニオンを持つベクトルの初期化は、この方法で実行できます

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.