私がやりたいのは、インターバルを効率的に処理することです。たとえば、私の例では、間隔は次のようになります。
[10, 20], [15, 25], [40, 100], [5, 14]
間隔は閉じて整数であり、一部の間隔は省略されている場合があります。特定のクエリの重複する間隔を効率的に見つけたい。たとえば、[16, 22]
が与えられた場合:
[10, 20], [15, 25]
上記の間隔は、過大な間隔として計算する必要があります。
私は現在、赤黒木に基づいた区間木を書いています(参照:CLRS、アルゴリズムの概要)。重複するすべての間隔を見つけることはO(n)ですが、実行時間はより速くなるはずです。間隔は削除および挿入できることに注意してください。
interval_map
ただし、Boostには次のものがあることがわかりましたinterval_set
:
http ://www.boost.org/doc/libs/1_46_1/libs/icl/doc/html/index.html
試してみましたが、動作がおかしいです。たとえば、[2, 7]
が最初に[3, 8]
挿入されてから挿入された場合、結果のマップには、、、[2, 3)
および[3, 7]
が含まれ(7, 8]
ます。つまり、新しい間隔が挿入されると、分割が自動的に行われます。
この機能をオフにできますか?または、Boostinterval_map
は私の目的に適していますか?