直接的な答え:
std::vector::operator=コンテナーのパブリックメンバー関数を使用してstd::vector、ベクトルから別のベクトルに値を割り当てることができます。
さらに、コンストラクター関数も意味があります。パラメーターとして別のベクトルを使用するコンストラクター関数(例x:)は、の各要素のコピーを使用xして同じ順序でコンテナーを構築します。
注意:
- 使ってはいけません
std::vector::swap
std::vector::swapはベクターを別のベクターにコピーするのではなく、その名前が示すように、実際には2つのベクターの要素を交換しています。言い換えると、コピー元のソースベクトルstd::vector::swapはが呼び出された後に変更されますが、これはおそらく予期したものではありません。
ソースベクトルの要素が他のデータへのポインターである場合、深いコピーが必要になることがあります。
ウィキペディアによると:
ディープコピー、つまりフィールドが逆参照されることを意味します。コピーされるオブジェクトへの参照ではなく、参照されるオブジェクトに対して新しいコピーオブジェクトが作成され、Bに配置されたオブジェクトへの参照が作成されます。
実際、現在C ++には、ディープコピーを行う組み込みの方法はありません。上記のすべての方法は浅いです。深いコピーが必要な場合は、ベクターをトラバースして、参照のコピーを手動で作成できます。代わりに、反復のために反復子を検討できます。イテレータについての議論はこの質問を超えています。
参考文献
std::vectorcplusplus.com のページ