103 votes

Comment puis-je passer plusieurs entiers dans un vecteur en une seule fois ?

Actuellement, quand je dois utiliser vector.push_back() plusieurs fois.

Le code que j'utilise actuellement est

std::vector TestVector;
TestVector.push_back(2);
TestVector.push_back(5);
TestVector.push_back(8);
TestVector.push_back(11);
TestVector.push_back(14);

Y a-t-il un moyen d'utiliser vector.push_back() une seule fois et simplement passer plusieurs valeurs dans le vecteur ?

156voto

Kosiek Points 395

Vous pouvez le faire avec une liste d'initialisation :

std::vector array;

// Le premier argument est un itérateur vers l'élément AVANT lequel vous allez insérer:
// Dans ce cas, vous insérerez avant l'itérateur end(), ce qui signifie ajouter une valeur
// à la fin du vecteur.
array.insert(array.end(), { 1, 2, 3, 4, 5, 6 });

79voto

billz Points 28166

Essayez de passer un tableau à un vecteur :

int arr[] = {2,5,8,11,14};
std::vector TestVector(arr, arr+5);

Vous pouvez toujours appeler std::vector::assign pour assigner un tableau à un vecteur, appeler std::vector::insert pour ajouter plusieurs tableaux.

Si vous utilisez C++11, vous pouvez essayer :

std::vector v{2,5,8,11,14};

Ou

std::vector v = {2,5,8,11,14};

79voto

sashoalm Points 10403

Vous pouvez également utiliser vector::insert.

std::vector v;
int a[5] = {2, 5, 8, 11, 14};

v.insert(v.end(), a, a+5);

Éditer :

Bien sûr, en programmation réelle, vous devriez utiliser :

v.insert(v.end(), a, a+(sizeof(a)/sizeof(a[0])));  // C++03
v.insert(v.end(), std::begin(a), std::end(a));     // C++11

5voto

Li Kui Points 321

En utilisant vector::insert (const_iterator position, initializer_list il); http://www.cplusplus.com/reference/vector/vector/insert/

#include 
#include 

int main() {
  std::vector vec;
  vec.insert(vec.end(),{1,2,3,4});
  return 0;
}

5voto

alfC Points 881

Voici les trois méthodes les plus directes :

1) Initialiser à partir d'une liste d'initialisation :

std::vector TestVector = {2,5,8,11,14};

2) Assigner à partir d'une liste d'initialisation :

std::vector TestVector;
TestVector.assign( {2,5,8,11,14} ); // écrase TestVector

3) Insérer une liste d'initialisation à un point donné :

std::vector TestVector;
...
TestVector.insert(end(TestVector), {2,5,8,11,14} ); // préserve les éléments précédents

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