ベクトルを理解するとそのユニークな特性
Scott Meyers の「Effective STL」では、vector の回避が強調されています。標準の STL コンテナとは異なるためです。この特殊性は、各 bool をバイトではなくビットとして格納する、vector の空間最適化に由来します。
vector
Vector
bool> の型破りな動作は、その基礎となる実装に起因します。従来の STL コンテナとは異なり、vector
Operator[] を使用して要素にアクセスする場合、bool& ではなくプロキシ オブジェクトを返します。このプロキシではビットレベルの操作が可能ですが、メモリ アドレスに直接アクセスする機能がありません。deque
Meyers は deque を支持していますが、 Vector の実行可能な代替手段として、その潜在的な欠点に注意することが重要です。 Deque は、各 bool をフルバイトとして格納するため、vector のメモリ効率の恩恵を受けません。さらに、Microsoft の標準ライブラリ実装は、効率を損なう方法でデキュー チャンクを割り当てる可能性があります。概要
Vector の標準 STL コンテナからの逸脱は、メモリ使用量の最適化。スペースを大幅に節約できますが、特定の標準コンテナー機能とメモリ アドレス指定の制限が犠牲になります。 Dequeはより従来的なオプションを提供しますが、その効率は実装によって異なる場合があります。以上がなぜ `std::vector` を避けるべきなのか、また `std::deque` がより良い選択となるのはどのような場合ですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。