C++でvectorに別のvectorを追加する方法を解説
C++のstd::vectorに別のvectorを追加(連結)したい場合、最も簡単な方法はinsert()メソッドを使用することです。insert()メソッドは、指定した位置に要素や範囲を挿入できるため、あるvectorの中身を丸ごと別のvectorに追加する際に非常に便利です。
アルゴリズム
Begin
関数show()を宣言する。
show()関数内で、vectorのコンストラクタを引数として受け取る。
for (auto const& i : input)
変数iの値を出力する。
vector型のvect1を宣言し、値を初期化する。
vector型の vect2 を宣言し、値を初期化する。
vect2.insert(vect2.begin(), vect1.begin(), vect1.end()) を呼び出し、
vect1 の内容を vect2 に追加する。
「Resultant vector is:」を出力する。
show()関数を呼び出して、vect2の内容を表示する。
End.サンプルコード
以下のコードでは、v1のすべての要素をv2の先頭に挿入しています。insert()の第1引数には挿入位置のイテレータ、第2・第3引数には追加元の範囲(開始イテレータと終了イテレータ)を指定します。
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
void show(vector<int> const &input) {
for (auto const& i : input) {
std::cout << i << " ";
}
}
int main() {
vector<int> v1 = { 1, 2, 3 };
vector<int> v2 = { 4, 5 };
// v1の全要素をv2の先頭に挿入
v2.insert(v2.begin(), v1.begin(), v1.end());
cout << "Resultant vector is:" << endl;
show(v2);
return 0;
}実行結果
Resultant vector is: 1 2 3 4 5
補足:末尾に追加する場合
上記の例ではv2の先頭(begin())に挿入しましたが、末尾に追加したい場合はv2.insert(v2.end(), v1.begin(), v1.end())と指定します。また、C++11以降であれば、より簡潔なinsert()のオーバーロードを使うこともできます。
// 末尾に追加する例 v2.insert(v2.end(), v1.begin(), v1.end()); // C++11以降なら範囲全体を直接指定できる v2.insert(v2.end(), v1);
このように、insert()メソッドを活用することで、vector同士の連結を柔軟かつ効率的に行うことができます。
-
【C++】vectorの内容を出力・表示する方法をわかりやすく解説
vector(ベクター)は動的配列に似ていますが、サイズを自由に変更できる点が大きな特徴です。vectorは、要素の挿入や削除に応じて自動的にサイズが変化するシーケンスコンテナであり、コンテナとは同じ型のデータを保持するオブジェクトのことを指します。vectorは、将来的な要素の追加に備えて余分なメモリを事前に確保することがあります。また、vectorの要素は連続したメモリ領域に格納され、新しいデータは基本的に末尾に追加されます。以下は、C++でvectorの内容を出力するサンプルコードです。サンプルコード#include<iostream> #include<vector&
-
C++で定数を定義する方法とは?const修飾子の基本的な使い方を解説
C++で定数(変更できない値)を定義するには、変数を宣言する際に型名の前にconst修飾子を付けるだけです。constを付けた変数は、一度初期化した後は値を書き換えることができません。 コード例 #include<iostream> using namespace std; int main() { const int x = 9; // 定数として x を定義 x = 0; // エラー:定数に値を代入しようとしている return 0; } このコードでは、const int x = 9; によって整数型の定数 x が定義さ