私はかなり専門的なコレクション.NETの必要性があります.BCLが私を助けてくれるとは思いませんが、誰かが似たようなことを知っていれば、私はそれをそこに投げ捨てると思いました。ソートされたキューは.NETに存在しますか?
基本的に、私の要件は、このようにしている:
- Iは、以下のような値のペアのリストを有する:(3,10)、(5,10)、(3,7)、(5、 5)
- 注文は重要です。 (3,10)!=(10,3)
- 個々の値は重複していますが、重複するペアは削除してください(できればサイレント)。
- キッカーは、私はこのリストが常にソートされている必要があります。私はいつでも並べ替えアルゴリズムによって定義されたリストの最初の値だけに興味があります。だから、
、私が行うことができるようにしたいもののいくつかのサンプルコード(私はそれはおそらく実施される構想として、上記に合わせて他の実装がに問題あり):
public class Pair
{
public Pair(int first, int second)
{ First = first; Second = second; }
public int First { get; set; }
public int Second { get; set; }
}
SortedQueue<Pair> foo = new SortedQueue<Pair>((left, right) => {
return right.First - left.First;
});
foo.Add(new Pair(10, 3));
foo.Add(new Pair(4, 6));
foo.Add(new Pair(6, 15));
foo.Add(new Pair(6, 13)); // This shouldn't cause a problem
Pair current = foo.Shift(); // current = (4, 6)
「優先順位キューin .Net」、http://stackoverflow.com/questions/102398/priority-queue-in-net –
適切な名前とリンクをありがとうございました。そして今、私はウィキペディアの記事を見ています。私が実装しようと考えていたのは、 '単純な実装'にリストされている2つのタイプ(ソートされているかどうかのフラグを持つリストを保持し、必要に応じてソートしてから検索してください)。実際の実装にリンクしてくれてありがとうございました。 –
これはA *検索の実装でもありました。これはウィキペディアの記事にもいくつかのメモがあるので、二重の敬称です。 –