私は宿題の一部としてC#で一般的なPriorityQueueを実装しています。 アイテムは配列に格納されます。カスタムタイプの比較
class PQueue<T> : IPQueue<T>
{
T[] items;
//..
}
どのように2つのアイテムを比較できますか。私は、PQueueがインスタンス化される型はIComparable
/IComparer
を実装しなければならないと思います。もしそうなら、どうすればitems
の2つの要素を比較できますか?
これを設計する上品な方法は何ですか。
var cmp = items[i].CompareTo(items[j]);
if (cmp < 0) {
// items[i] is less than items[j]
} else if (cmp > 0) {
// items[i] is greater than items[j]
} else {
// Items are equal
}
'T:IComparable' –
Nemo
@Nemo制約がなければ、コンパイラは 'items [i]'に 'CompareTo'というメソッドがないことを伝えます。 – dasblinkenlight