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?


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);

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);
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.