我需要一个有序队列,其中对象将按主要和次要值进行排序。
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/