Question Comment passer plusieurs ints dans un vecteur à la fois?


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

Le code que j'utilise actuellement est

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

Est-il possible d'utiliser uniquement vector.push_back() une fois et juste passer plusieurs valeurs dans le vecteur?


43
2018-01-28 12:21


origine


Réponses:


Essayez de passer le tableau au vecteur:

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

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

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

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

Ou

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

50
2018-01-28 12:22



Vous pouvez aussi utiliser vector :: insert.

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

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

Modifier:

Bien sûr, dans la programmation réelle, vous devez 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

49
2018-01-28 12:26



Vous pouvez le faire avec la liste d'initialisation:

std::vector<unsigned int> array;

// First argument is an iterator to the element BEFORE which you will insert:
// In this case, you will insert before the end() iterator, which means appending value
// at the end of the vector.
array.insert(array.end(), { 1, 2, 3, 4, 5, 6 });

16
2017-10-24 10:42



Vous pouvez aussi utiliser Boost.Assignation:

const list<int> primes = list_of(2)(3)(5)(7)(11);

vector<int> v; 
v += 1,2,3,4,5,6,7,8,9;

3
2018-01-28 14:07



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

#include <iostream>
#include <vector>

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

2
2017-09-22 10:09