「std::vector」の容量を減らすにはどうすればよいですか?

Patricia Arquette
リリース: 2024-10-29 03:07:30
オリジナル
627 人が閲覧しました

 How to Reduce the Capacity of a `std::vector`?

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート
私たちについて 免責事項 Sitemap
PHP中国語ウェブサイト:福祉オンライン PHP トレーニング,PHP 学習者の迅速な成長を支援します!