8..15
重複しない範囲 (例: 、16..19
) を構造体へのポインターにマップするデータ構造が必要です。
その範囲内の任意の要素を検索して、そのポインターを取得できる必要があります。例えば:
structure[8..15] = 0x12345678;
structure[16..19] = 0xdeadbeef;
structure[7]; // => NULL
structure[12]; // => 0x12345678
structure[18]; // => 0xdeadbeef
現在、二分探索木の使用を検討しています。範囲が重複することはないため、対数時間で比較的簡単にインデックスを検索できます。
ただし、この場合により適したデータ構造があるかどうかは疑問です。効率的に挿入、削除、検索できる必要があります。これらの操作はすべて BST では O(log n) ですが、これを高速化する方法があるかどうか疑問に思っています。