Initialisieren Sie einen Vektor mit Nullen C ++ / C ++ 11

117

Ich weiß, dass sie in C ++ 11 die Funktion hinzugefügt haben, um eine Variable als solche auf Null zu initialisieren

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

Gibt es eine ähnliche Möglichkeit, std::vectoreine feste Länge mit allen Nullen zu initialisieren ?

pyCthon
quelle
13
std::vector<int> vec(42);
Avakar
9
Übrigens ist dies nicht neu in C ++ 11, Sie können dies auch in früheren Versionen tun
Balki

Antworten:

219

Dafür benötigen Sie keine Initialisierungslisten:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);
Ronag
quelle
36
Sie müssen die 0 nicht explizit angeben, oder? vector(length)sollte nur funktionieren?
Daniel Gratzer
36
@jozefg: Ja, es würde funktionieren, obwohl es nicht schaden kann, explizit anzugeben, was der Code tun soll.
Ronag
1
@ronag Ich habe meine eigene Antwort geschrieben, weil es in diesem Fall nicht unbedingt ein gutes Beispiel ist, explizit zu sein, wenn int nicht der Typ ist, mit dem er arbeitet. Die allgemeine Programmierung ist in C ++ verfügbar, aber als ich daran erinnert wurde, dass Sie das Argument ganz weglassen können, habe ich meine Antwort entfernt.
Johannes Schaub - litb
1
Ein Vektor wird automatisch auf 0 initialisiert, es sei denn, Sie geben in der Deklaration einen anderen Wert an, wie ronag gezeigt hat.
Nikos
Ist es möglich, das All-Element von Global Vector ZEROmit effizient neu zu initialisieren, ohne for-Schleifen zu verwenden ??????
Ankit Mishra
0

Auf diese Weise kann ein Vektor mit Struktur, Klasse oder Union initialisiert werden

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Dexter's
quelle