コレクションを0から65535の範囲の整数で保持する必要があるため、次のことをすばやく実行できます。
- 新しい整数を挿入する
- 連続する整数の範囲を挿入する
- 整数を削除する
- 整数以下のすべての整数を削除します
- 整数が存在するかどうかをテストします
私のデータには、コレクションに整数の実行が含まれることが多いという特性があります。たとえば、ある時点でのコレクションは次のようになります。
{ 121, 122, 123, 124, 3201, 3202, 5897, 8912, 8913, 8914, 18823, 18824, 40891 }
最も単純なアプローチは、C ++ std :: setのようなバランスのとれたバイナリツリーを使用することですが、それを使用して、私はしばしば数値の実行があるという事実を利用していません。おそらく、範囲のコレクションを格納する方が良いでしょうか?しかし、これは、範囲内の整数が削除された場合、または2つの範囲間のスペースが埋められた場合に結合された場合、範囲を分割できる必要があることを意味します。
この問題に適している既存のデータ構造はありますか?