2016-11-02 9 views
0

私は、次のクラスが配列にCompareToを実装する方法は?

public class MinPQ<T> : IComparable<T> 
{ 
    private T[] keys; 
    ... 
} 

どうCompareToメソッドを実装する必要がありますか?私は、私はあなたに匹敵するタイプTを宣言する方法を意味することを前提とした時間Tのほとんどはintまたはdouble

+1

配列内のオブジェクトを比較するときに、なぜ「MinPQ」でCompareToを実装しますか? MinPQは責任を負うべきではありません。 'T'が' IComparable'を実装する必要がある場合、おそらく、制約を追加するほうがよいでしょう: 'public class MinPQ T:IComparable '。 – Silvermind

+0

indexで別の要素を別の配列の要素と比較したい場合は、 'IComparable ' - 'int'と 'double'を実装してはいけません。あなたは匹敵するタイプだけを受け入れたいのですか? –

答えて

3

になります私の方法で次の操作を実行する

public void decreaseKey(int i, T key){ 
    if (keys[i].CompareTo(key) <= 0) {...} // or if(CompareTo(keys[i], key) <= 0) 
} 

をしたいと思います。その場合は、次の一般的な制約を使用して実行できます。

public class MinPQ<T> where T: IComparable<T> 
{ 
    private T[] keys; 
    ... 
} 
関連する問題