C++ でベクターをベクターに追加

胡金庫 2023年10月12日
  1. C++ でベクトルを別のベクトルに追加するには insert 関数を使用する
  2. insert 関数を使用して C++ のベクトルに要素を追加する
C++ でベクターをベクターに追加

この記事では、C++ でベクトルを別のベクトルに追加する方法をいくつか説明します。

C++ でベクトルを別のベクトルに追加するには insert 関数を使用する

insert メソッドは std::vector コンテナの組み込み関数であり、vector オブジェクトに複数の要素を追加することができます。最初の例として、ある vector から別の vector に与えられた範囲を追加する方法を示します。引数に 3つのイテレータを指定すると、insert 関数は最初のパラメータとして渡されたイテレータの前に、最後の 2つの引数の範囲の要素を追加します。次のコード例では、最初の vector オブジェクトの end イテレータを渡しているので、この関数は本質的に 2つのベクトルの追加を行っていることになります。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};
  vector<int> i_vec2 = {121, 321, 431, 531, 231, 651, 841};

  cout << "i_vec1           : ";
  printVectorElements(i_vec1);
  i_vec1.insert(i_vec1.end(), i_vec2.begin(), i_vec2.end());
  cout << "i_vec1 (inserted): ";
  printVectorElements(i_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

i_vec1           : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 12; 32; 43; 53; 23; 65; 84; 121; 321; 431; 531; 231; 651; 841;

または、std::end /std::begin メソッドを使用してイテレータを指定し、insert 関数に引数を渡すより一般的な方法を実装することもできます。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};
  vector<int> i_vec2 = {121, 321, 431, 531, 231, 651, 841};

  cout << "i_vec1           : ";
  printVectorElements(i_vec1);
  i_vec1.insert(std::end(i_vec1), std::begin(i_vec2), std::end(i_vec2));
  cout << "i_vec1 (inserted): ";
  printVectorElements(i_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

insert 関数を使用して C++ のベクトルに要素を追加する

もう一つの一般的な insert メソッドの使い方は、与えられた値を持つ要素の範囲を vector に追加することです。例えば、整数の vector の最初の 4つの位置にゼロを挿入することができます。第 1 引数は要素を追加する前の要素の位置であることに注意してください。この insert メソッドは、new コールを用いて vector の要素を手動で確保した場合でも利用できます。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<int> i_vec1 = {12, 32, 43, 53, 23, 65, 84};

  cout << "i_vec1           : ";
  printVectorElements(i_vec1);
  i_vec1.insert(i_vec1.begin(), 4, 0);
  cout << "i_vec1 (inserted): ";
  printVectorElements(i_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

i_vec1           : 12; 32; 43; 53; 23; 65; 84;
i_vec1 (inserted): 0; 0; 0; 0; 12; 32; 43; 53; 23; 65; 84;

insert メソッドは、2つの文字列のベクトルを連結する必要がある場合にも適用できます。次の例は、整数ベクトルで用いられるのとほぼ同じ構文を用いて、指定されたケースを示しています。

#include <iostream>
#include <vector>

using std::cin;
using std::cout;
using std::endl;
using std::string;
using std::vector;

template <typename T>
void printVectorElements(vector<T> &vec) {
  for (auto i = 0; i < vec.size(); ++i) {
    cout << vec.at(i) << "; ";
  }
  cout << endl;
}

int main() {
  vector<string> str_vec1 = {"doordash", "dribble", "renode", "xilinx"};
  vector<string> str_vec2 = {"airbus", "sikorsky"};

  str_vec1.insert(str_vec1.end(), str_vec2.begin(), str_vec2.end());
  printVectorElements(str_vec1);
  cout << endl;

  return EXIT_SUCCESS;
}

出力:

doordash; dribble; renode; xilinx; airbus; sikorsky;
著者: 胡金庫
胡金庫 avatar 胡金庫 avatar

DelftStack.comの創設者です。Jinku はロボティクスと自動車産業で8年以上働いています。自動テスト、リモートサーバーからのデータ収集、耐久テストからのレポート作成が必要となったとき、彼はコーディングスキルを磨きました。彼は電気/電子工学のバックグラウンドを持っていますが、組み込みエレクトロニクス、組み込みプログラミング、フロントエンド/バックエンドプログラミングへの関心を広げています。

LinkedIn Facebook

関連記事 - C++ Vector