SCG.Dictionaryに似ているが数字の範囲をキーとして持つデータ構造を探している。キーレンジルックアップに適したデータ構造を提案する
パフォーマンスが最も必要とされる主な操作は、指定された範囲と重複するキーをルックアップすることです。
[ 5, 15] -> King
[25, 40] -> Doll
理想的探索方法がIEnumerableを返すべきである:[10、30]は、それが次のエントリで応答しなければならないアルゴリズムを検索するために渡された場合は、次のマップを
[ 5, 15] -> King
[35, 50] -> Bear
[25, 40] -> Doll
を想定例えば
、結果を中間コンテナにコピーするのではなく、同様にSortedSet.GetViewBetween
使用パターンは
var lookup = new RangeDictionary<int>();
lookup.Add(5, 15, 'King');
lookup.Add(35, 50, 'Bear');
lookup.Add(25, 40, 'Doll');
var results = lookup.FindIntersection(10, 30);
foreach(var pair in results)
Console.WriteLine("[{0}, {1}] -> {2}", pair.Key.From, pair.Key.To, pair.Value);
の線に沿って何かだろう任意の既製の解決策はありますか?ここで
あなたの例は正しいですか? '[10,35]'の結果はどうなりますか? 「キング、クマ」、「キング、ドール」、「キング、クマ、ドール」の場合は? – Jehof
あなた自身で作成するのに十分なように思えますが、このための準備ができたソリューションを探している理由は何ですか? –
私はあなたがインターバルツリーを探していると思う、http://stackoverflow.com/questions/303591/a-range-intersection-algorithm-better-than-on – PartlyCloudy