158 votes

initialiser un vecteur à des zéros C++/C++11

Je sais qu'en C++11 ils ont ajouté la possibilité d'initialiser une variable à zéro comme ceci

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

Existe-t-il un moyen similaire d'initialiser un std::vector d'une longueur fixe à tous les zéros ?

298voto

ronag Points 13051

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

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

4voto

Dexter's Points 474

L'initialisation d'un vecteur ayant une structure, une classe ou une union peut être effectuée de la manière suivante

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

0voto

Naidu Points 5019

Avec les versions récentes de c++, vous pouvez opter pour std::fill .

J'ai remarqué que quelqu'un l'a mentionné en tant que commentaire. Mais il faudrait répondre et encourager l'utilisation des algorithmes de la bibliothèque standard qui sont mentionnés par les experts, très bien testés et éprouvés.

    std::vector<int> vecOfInts;
    vecOfInts.resize(10);

    std::fill(vecOfInts.begin(), vecOfInts.end(), 0);

    for (auto const& intVal : vecOfInts)
    {
        std::cout << intVal << " ";
    }

0voto

a random guy Points 1

Pour le c++ : Disons que le vecteur a un maximum de 100 éléments int. Vous pouvez l'initialiser de cette façon :

int vector[100]={0} ;

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X