我有双人班。
public class Pair
{
public int freq;
public int coolTime;
public Pair(int freq, int coolTime)
{
this.freq = freq;
this.coolTime = coolTime;
}
}
我想创建一个带有自定义比较器的优先级队列,使其成为最大堆。我正在尝试使用 lambda 来做到这一点。我不明白问题出在哪里。这是我尝试过的事情。
var pq = new PriorityQueue<Pair, int>(Comparer<Pair>.Create((x, y) => y.freq.CompareTo(x.freq)));
我知道我犯了一些愚蠢的错误,但我不确定它是什么。任何帮助将不胜感激。
PriorityQueue<TElement, TPriority>
的比较器比较优先级,而不是元素。这就是错误消息告诉您的内容。
更改代码以比较优先级,如下所示:
var pq = new PriorityQueue<Pair, int>(Comparer<int>.Create((x, y) => y.CompareTo(x)));