次の順序値
ソート済みの string[] から、特定の文字列で開始するインデックスの範囲を知りたい。
「次の順序値」が明確な型であれば、これは結構簡単で、
bool GetRange(int[] array, int value, out int min, out int max) { min = Array.BinarySearch(value); max = Array.BinarySearch(value + 1); if (min < 0) min = ~min; if (max < 0) max = ~max; max--; return (min <= max); }
ここから、上記を string 型にしたり、T 型にして List`1 を引数にとるようにすることはちょっと難しい。*1
Comparer.Default とか比較処理は固定でいいので、文字列の「次」を明確に指定するのはどうするといいんだろうかね。
*1:T 型に関しては、http://d.hatena.ne.jp/ladybug/archive?word=IMath なかんじで T.Inc() が呼び出せれば問題ないんだけど