initialiser un vecteur à zéro C ++ / C ++ 11

118

Je sais que dans C ++ 11, ils ont ajouté la fonctionnalité pour initialiser une variable à zéro en tant que telle

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

Existe-t-il une manière similaire d'initialiser a std::vectord'une longueur fixe à tous les zéros?

pyCthon
la source
13
std::vector<int> vec(42);
avakar
9
btw, ce n'est pas nouveau dans c ++ 11, vous pouvez également le faire dans les versions précédentes
balki

Réponses:

220

Vous n'avez pas besoin de listes d'initialisation pour cela:

std::vector<int> vector1(length, 0);
std::vector<double> vector2(length, 0.0);
Ronag
la source
37
Vous n'avez pas besoin d'indiquer explicitement le 0, n'est-ce pas? vector(length)devrait juste fonctionner?
Daniel Gratzer
38
@jozefg: Oui, cela fonctionnerait, bien qu'il n'y ait aucun mal à être explicite sur ce que vous voulez que le code fasse.
ronag
1
@ronag j'ai écrit ma propre réponse car être explicite dans ce cas n'est pas nécessairement un bon exemple si int n'est pas le type avec lequel il travaille. la programmation générale est disponible en c ++ mais quand on m'a rappelé que vous pouvez omettre complètement l'argument, j'ai supprimé ma réponse.
Johannes Schaub - litb
1
Un vecteur est automatiquement initialisé à 0, sauf si vous spécifiez une autre valeur dans la déclaration, comme l'a montré ronag.
Nikos
Est-il possible de réinitialiser ZEROefficacement l' élément all de Global Vector avec avec sans utiliser de boucles for ??????
Ankit Mishra
0

L'initialisation d'un vecteur ayant struct, class ou Union peut se faire de cette façon

std::vector<SomeStruct> someStructVect(length);
memset(someStructVect.data(), 0, sizeof(SomeStruct)*length);
Dexter
la source