ベクトルのコピーは、元のベクトルと同じ要素を含む新しいベクトルを作成するプロセスです。この記事では、C++ でベクトルをコピーするさまざまな方法を学びます。
C++ でベクトルをコピーする最も効率的かつ簡単な方法は、次を使用することです。 代入演算子 (=) 。 例を見てみましょう:
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; // Assigning the vector v1 to vector v2 vector<int> v2 = v1; for (auto i : v2) cout << i << ' '; return 0; }
出力
2 4 1 5 3
C++ には、ベクトルを別のベクトルにコピーするためのメソッドがさらに用意されています。それらは次のとおりです。
目次
ベクターコンストラクターの使用
宣言時にベクトルをコピーするもう 1 つの簡単な方法は、元のベクトルを別のベクトルのコピー コンストラクターに渡すことです。 ベクター。
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; // Copying vector v1 into vector v2 vector<int> v2(v1); for (auto i : v2) cout << i << ' '; return 0; }
出力
2 4 1 5 3
copy() の使用
の コピー() function は、C++ でデータをコピーするための頼りになるメソッドです。イテレータを使用して、あるベクトルを別のベクトルにコピーできます。さらに、 コピーイフ() この関数のバリアントでは、単項述語関数に基づいて選択的コピーを実行することもできます。
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying vector v1 into vector v2 copy(v1.begin() v1.end() back_inserter(v2)); for (auto i : v2) cout << i << ' '; return 0; }
出力
2 4 1 5 3
説明: 使わなければなりません back_insertor() 宣言時にベクトル サイズを指定しなかった場合は、関数を使用します。すでに十分なスペースがある場合はパスしなければなりません v2.begin() その代わり。
Vector assign() の使用
の ベクトル割り当て() メソッドは = 演算子メソッドと同等ですが、コピーされるベクトルへの反復子が必要です。
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying the vector v1 into vector v v2.assign(v1.begin() v1.end()); for (auto i : v2) cout << i << ' '; return 0; }
出力
2 4 1 5 3
Vector insert() の使用
の ベクトル挿入() メソッドは、指定された範囲からすべての要素をコピーできるバージョンを提供します。これを使用すると、assign() メソッドと同様の方法でベクトル全体を別のベクトルにコピーできます。
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying vector v1 into vector v2 v2.insert(v2.begin() v1.begin() v1.end()); for (auto i : v2) cout << i << ' '; return 0; }
出力
2 4 1 5 3
Vector Push_back() の使用
次を使用して、最初のベクトルのすべての要素を 2 番目のベクトルにプッシュします。 ベクトルプッシュバック() 方法。ループでは、最初のベクトルを反復処理できます。
C++#include using namespace std; int main() { vector<int> v1 = {2 4 1 5 3}; vector<int> v2; // Copying vector v1 into vector v2 for (auto i : v1) v2.push_back(i); for (auto i : v2) cout << i << ' '; return 0; }
出力
2 4 1 5 3
この方法では、コピーする前に必要に応じて要素を変更することもできるため、より詳細な制御が可能になります。