web-dev-qa-db-de.com

Wie übergebe ich mehrere Ints gleichzeitig in einen Vektor?

Derzeit, wenn ich vector.Push_back() mehrmals verwenden muss.

Der Code, den ich gerade benutze, ist

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

Gibt es eine Möglichkeit, vector.Push_back() nur einmal zu verwenden und einfach mehrere Werte in den Vektor zu übergeben?

47
Elliott

Versuchen Sie, das Array an den Vektor zu übergeben:

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

Sie können jederzeit std :: vector :: assign aufrufen, um dem Vektor ein Array zuzuweisen. Rufen Sie std :: vector :: insert auf, um mehrere Arrays hinzuzufügen.

Wenn Sie C++ 11 verwenden, können Sie Folgendes versuchen:

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

Oder

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

Sie können auch vector :: insert verwenden.

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

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

Bearbeiten:

Natürlich sollten Sie beim Programmieren in der realen Welt Folgendes verwenden:

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
53
sashoalm

Sie können dies mit der Initialisierungsliste tun:

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 });
32
Kosiek

using vector :: insert (const_iterator position, 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;
}
3
Li Kui

Sie können auch Boost.Assignment verwenden:

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
zxxc

Dies sind die drei einfachsten Methoden:

1) Aus einer Initialisierungsliste initialisieren:

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

2) Aus einer Initialisierungsliste zuweisen:

std::vector<int> TestVector;
TestVector.assign( {2,5,8,11,14} ); // overwrites TestVector

3) Fügen Sie an einer bestimmten Stelle eine Initialisierungsliste ein:

std::vector<int> TestVector;
...
TestVector.insert(end(TestVector), {2,5,8,11,14} ); // preserves previous elements
0
alfC