我使用标准BinaryHeap
作为算法的一部分,我需要检索最大的对象(通过一些最大的定义)。两个非等价元素可能都同样大(因此它们在二进制堆中的相对顺序无关紧要) - 例如,我可能只对多字段结构的单个字段进行排序感兴趣。
因此,让我的类型实现Ord
和Eq
. PartialOrd
相反,我可能应该PartialEq
只实施。但是,唉,BinaryHeap
要求它的元素是Ord
!为什么会这样,使用BinaryHeap
这种类型的最惯用的方法是什么?
(顺便说一句,在 C++ 中,在这种情况下,我会相当容易地编写自定义比较器类型,并在比较器类型上模板化优先级队列。所以我不认为我想做的在数学或算法上是错误的。)