79

現在、vector.push_back()複数回使用する必要がある場合。

私が現在使用しているコードは

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

一度だけ使用vector.push_back()して複数の値をベクトルに渡す方法はありますか?

4

9 に答える 9

116

イニシャライザリストでそれを行うことができます:

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 });
于 2016-10-24T10:42:26.043 に答える
74

配列をベクトルに渡してみてください:

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

std::vector::assignを呼び出して配列を vector に割り当てたり、std::vector::insert を呼び出して複数の配列を追加したりできます。

C++11 を使用している場合は、次を試すことができます。

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

または

 std::vector<int> v = {2,5,8,11,14};
于 2013-01-28T12:22:27.987 に答える
68

vector::insertも使用できます。

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

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

編集:

もちろん、実際のプログラミングでは以下を使用する必要があります。

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
于 2013-01-28T12:26:23.450 に答える
4

Boost.Assignmentも使用できます。

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

vector<int> v; 
v += 1,2,3,4,5,6,7,8,9;
于 2013-01-28T14:07:48.487 に答える
3

これらは、最も簡単な 3 つの方法です。

1) 初期化子リストから初期化します。

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

2) 初期化子リストから代入:

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

3) 指定されたポイントにイニシャライザ リストを挿入します。

std::vector<int> TestVector;
...
TestVector.insert(end(TestVector), {2,5,8,11,14} ); // preserves previous elements
于 2019-07-29T03:13:51.610 に答える