リスト内のものをインデックスで参照するプロトコルを使用しています。それらを保存する自然な方法はベクトルであるため、一定時間でランダムアクセスできます。しかし、本質的に、ベクトルの先頭には、挿入や削除を含む多くの操作があります。インデックスが低いほど、いじりやすくなります。その結果、ベクトルの残りの部分が大量にコピーされます。
コンテンツのシフトを最小限に抑えるために、プロトコル インデックスをより高いベクトル インデックス (つまり、より高いアドレス) に配置するという逆の方法で格納したいと考えていますが、プロトコル インデックスによって透過的に要素にランダム アクセスすることもできます。理想的なコンテナーは、ポインター演算などを除いて、std::vector のドロップイン置換です。私はまだポインター演算が必要ですが、逆順を自分で処理できます。
そのようなクラスはありますか?
たぶん、私が見つけられなかったブーストコンテナか、あいまいなポリシーですか?
編集:実際には、indexの前0
だけでなく index の後にスペースを予約する一種のベクトルを使用できることに気づきましたlength-1
。私が思ったように、Dequeはそのように構築されていません。代わりにメモリのチャンクを使用して、ポインタ演算を防ぎます。