std::vector は Push_back() でオブジェクトをコピーしますか?
Valgrind を使用した広範な分析の結果、std::vector は次のように結論付けられました。 Push_back() を使用して挿入されたオブジェクトのコピーを実行します。
内部メカニズム
参照に対してのみ動作する C の Vector とは異なり、C の std::vector は格納します。実際のオブジェクト。これは、push_back() が呼び出されるたびに、挿入されたオブジェクトのコピーが作成され、ベクターの内部配列に追加されることを意味します。
ポインターのストレージ
ベクター内にポインターを格納する場合は、 std::vector
スマート ポインター
スマート ポインターにより、オブジェクトの有効期間を管理することで、含まれているオブジェクトがベクトルによって参照されている間有効なままであることが保証されます。これらは、Resource Acquisition Is Initialization (RAII) イディオムを利用して、リソースを自動的に取得および解放します。
要約すると、 std::vector::push_back() は、挿入されたオブジェクトのコピーを作成しますが、std のスマート ポインターを利用します。 ::vectorこれにより、基になるオブジェクトをコピーせずにポインターを保存できるようになり、ベクターの有効期間内での有効性が保証されます。
以上が`std::vector::push_back()` はオブジェクトのコピーを作成しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。