我不了解比较器功能设置的排序顺序。
这是传递到优先级队列的比较器参数的代码:
struct CompareHeight {
bool operator()(Person const& p1, Person const& p2)
{
return p1.height < p2.height;
}
};
这将按高度降序输出
示例输出:6 5 4 3 2
不应像2 3 4 5 6那样输出
答案 0 :(得分:2)
priority_queue
始终以最大元素(最高优先级)开头,例如here。
答案 1 :(得分:0)
作为比较器函数,问题将是“按照我们的顺序,第一个参数是否在第二个参数之前?” (根据cppreference.com)。因此,如果要按升序排序,则应比较p1.height > p2.height
。
通常,您的原始代码可以使用,但是,由于这是一个优先级队列,因此顺序将相反(如p1.height > p2.height
)。