std::vector のサイズ変更: 過剰な容量のトリミング
質問: std::vector のサイズを縮小するにはどうすればよいですか?未使用のスペースを再利用して容量を減らすには?
答え: std::vector を現在のサイズに縮小するには、Scott Meyers の効果的な STL で推奨されている「スワップ トリック」を利用できます (項目17)。その仕組みは次のとおりです:
1.一時的なベクトルの作成:
元のベクトルと同じデータ型で一時的な std::vector を作成します。
<code class="cpp">vector<Person> temp(persons); // Assuming 'persons' is the original vector</code>
2.ベクトルの交換:
swap() 関数を使用して、元のベクトルと一時的なベクトルを交換します。
<code class="cpp">persons.swap(temp);</code>
説明:
std::vector コピー コンストラクターは、コピーされる必要な数の要素に対してのみメモリを割り当てます。ベクトルを交換すると、基本的に、元のベクトルの現在のサイズに適合する新しいベクトルが作成されます。その後、元のベクトルは一時ベクトルから新しく割り当てられたサイズを受け取り、過剰な容量を効果的にトリミングします。
このアプローチは効率的であり、個々の要素をコピーする必要はありません。これは、定数時間操作であるスワップ操作に依存しています。
以上が「std::vector」の容量を減らすにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。