C++11 より前の時代、多くの本の著者は、dequeランダム アクセスで動的にサイズ変更されたコンテナーが必要な状況で for を使用することを推奨していました。これは、一部には、 がdequeよりも汎用性の高いデータ構造に移動vectorしたという事実によるものでしたが、vectorC++11 以前の世界では、"shrink toフィット。" ブラケットdeque演算子と反復子を介した要素への間接アクセスのオーバーヘッドの増加vectorは、再割り当てのオーバーヘッドの増加に含まれているようです。
一方で、変わらないものもあります。vector再割り当てには引き続き幾何学的 (つまり、サイズ * 係数) スキームを使用し、すべての要素を新しく割り当てられたスペースにコピー (または可能であれば移動) する必要があります。vector前部および/または中間部での要素の挿入/削除に関しては、以前と同じです。一方、参照の局所性は向上しますが、使用されるブロックdequeが「かなり大きな」サイズである場合、キャッシュに関する利点は多くのアプリで主張できます。
したがって、私の質問は、C++ 11 に伴う変更を考慮してdeque、動的にサイズ設定された/ランダムアクセスのニーズに対応するための最初の選択肢のコンテナーであり続ける必要があるかどうかです。