配列から効率的に削除するために独自のクラスを実装しようとしていましたが、そのようなものが既に存在するかどうかを確認したいと思いました。私が欲しいのは、リストのようなアクセス効率ですが、配列を使用しています。キャッシュの一貫性のために配列を使用したいので、(ノードを割り当てるときに std::list を使用する場合と同様に) メモリ アロケータを継続的に呼び出す必要はありません。
私が考えたのは、2 つの配列を持つクラスを作成することでした。1 つ目は要素のセットで、2 つ目の配列は整数のセットで、各整数は最初の配列の空きスロットです。そのため、空きリストからインデックスを取得し、それを新しい要素に使用するだけで、新しいメモリを割り当てることなく、配列から要素を簡単に追加/削除できます。
このようなものはすでに存在しますか?私が独自に行う場合は、独自の反復子も作成する必要があるため、配列内の空のスロットを回避してセットを反復処理できますが、あまり好きではありません。
ありがとう。
注:セットで実行したい操作の種類は次のとおりです。
- 反復
- 個々の要素へのランダムアクセス、インデックス (または私が考えているように「ハンドル」) による
- セット内の任意の要素の削除
- セットへの要素の追加 (順序は重要ではありません)