我需要一个有序队列,其中对象将按主要和次要值进行排序。

class Object
{
  int PrimaryValue;
  int SecondaryValue;
}


对象在队列中的位置必须由PrimaryValue确定。具有较高PrimaryValue的对象必须位于具有较低PrimaryValue的对象之前。但是,对于具有相同PrimaryValue的两个对象,必须使用SecondaryValue来确定优先级。另外,我还需要两个函数来获取将分别返回迭代器的前向迭代器GetFirst()和后向迭代器GetLast()

最佳答案

class Obj : IComparable<Obj>
{
    int PrimaryValue;
    int SecondaryValue;

    public int CompareTo(Obj other)
    {
        if (other == null) throw new ArgumentNullException("other");
        int diff = PrimaryValue - other.PrimaryValue;
        return diff != 0 ? diff : SecondaryValue - other.SecondaryValue;
    }
}


我不确定您所说的正向和反向迭代器是什么意思,这是C ++专门用于C#中不存在的概念的术语。您总是可以简单地通过使用foreach (var e in coll) ...在正向上迭代集合,而在使用System.Linq:foreach (var e in coll.Reverse()) ...的情况下则可以反向进行迭代。

关于c# - 有两个索引的有序队列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1935838/

10-11 20:34