C++で2つのstd::vectorを連結するその他の方法
C++で2つのstd::vectorを連結する方法
C++において、2つのstd::vector
を連結する一般的な方法は、std::vector
のコンストラクタを使用することです。
std::vectorのコンストラクタを利用する
#include <vector>
std::vector<int> vector1 = {1, 2, 3};
std::vector<int> vector2 = {4, 5, 6};
// vector1 と vector2 を連結して新しい vector を作成
std::vector<int> concatenatedVector(vector1.begin(), vector1.end());
concatenatedVector.insert(concatenatedVector.end(), vector2.begin(), vector2.end());
// concatenatedVector は {1, 2, 3, 4, 5, 6} になります
std::vector<int> concatenatedVector(vector1.begin(), vector1.end());
: これは、vector1
の要素をすべてコピーして新しいconcatenatedVector
を作成します。concatenatedVector.insert(concatenatedVector.end(), vector2.begin(), vector2.end());
: これは、concatenatedVector
の末尾にvector2
の要素を挿入します。
std::back_inserterを使用する
#include <vector>
#include <algorithm>
std::vector<int> vector1 = {1, 2, 3};
std::vector<int> vector2 = {4, 5, 6};
// vector1 と vector2 を連結して新しい vector を作成
std::vector<int> concatenatedVector;
std::copy(vector1.begin(), vector1.end(), std::back_inserter(concatenatedVector));
std::copy(vector2.begin(), vector2.end(), std::back_inserter(concatenatedVector));
// concatenatedVector は {1, 2, 3, 4, 5, 6} になります
std::back_inserter(concatenatedVector)
: これは、concatenatedVector
の末尾に要素を追加するためのイテレータを返します。std::copy
: これは、1つの範囲の要素を別の範囲にコピーします。
#include <vector>
std::vector<int> vector1 = {1, 2, 3};
std::vector<int> vector2 = {4, 5, 6};
// vector1 と vector2 を連結して新しい vector を作成
std::vector<int> concatenatedVector(vector1.begin(), vector1.end());
concatenatedVector.insert(concatenatedVector.end(), vector2.begin(), vector2.end());
// concatenatedVector は {1, 2, 3, 4, 5, 6} になります
解説:
#include <vector>
#include <algorithm>
std::vector<int> vector1 = {1, 2, 3};
std::vector<int> vector2 = {4, 5, 6};
// vector1 と vector2 を連結して新しい vector を作成
std::vector<int> concatenatedVector;
std::copy(vector1.begin(), vector1.end(), std::back_inserter(concatenatedVector));
std::copy(vector2.begin(), vector2.end(), std::back_inserter(concatenatedVector));
// concatenatedVector は {1, 2, 3, 4, 5, 6} になります
std::moveを使用する
#include <vector>
#include <algorithm>
std::vector<int> vector1 = {1, 2, 3};
std::vector<int> vector2 = {4, 5, 6};
// vector1 と vector2 を連結して新しい vector を作成
std::vector<int> concatenatedVector(std::move(vector1));
concatenatedVector.insert(concatenatedVector.end(), vector2.begin(), vector2.end());
// concatenatedVector は {1, 2, 3, 4, 5, 6} になります
// vector1 は空になります
std::move(vector1)
: これは、vector1
の所有権を移動します。これにより、vector1
は空になり、concatenatedVector
はvector1
の要素を所有します。
std::accumulateを使用する
#include <vector>
#include <numeric>
std::vector<int> vector1 = {1, 2, 3};
std::vector<int> vector2 = {4, 5, 6};
// vector1 と vector2 を連結して新しい vector を作成
std::vector<int> concatenatedVector = std::accumulate(vector1.begin(), vector1.end(), vector2, [](std::vector<int>& v1, int v2) {
v1.push_back(v2);
return v1;
});
// concatenatedVector は {1, 2, 3, 4, 5, 6} になります
std::accumulate
: これは、範囲の要素を累積する関数です。ここでは、vector1
の要素をvector2
に累積し、新しいconcatenatedVector
を作成します。
#include <vector>
#include <algorithm>
std::vector<int> vector1 = {1, 2, 3};
std::vector<int> vector2 = {4, 5, 6};
// vector1 と vector2 を連結して新しい vector を作成
std::vector<int> concatenatedVector;
concatenatedVector.reserve(vector1.size() + vector2.size());
std::merge(vector1.begin(), vector1.end(), vector2.begin(), vector2.end(), std::back_inserter(concatenatedVector));
// concatenatedVector は {1, 2, 3, 4, 5, 6} になります
std::merge
: これは、2つのソートされた範囲をマージする関数です。ここでは、vector1
とvector2
がソートされていると仮定し、マージして新しいconcatenatedVector
を作成します。
c++ concatenation std