优先级队列中比较器功能的工作

时间:2019-05-25 11:21:52

标签: c++ priority-queue

我不了解比较器功能设置的排序顺序。

这是传递到优先级队列的比较器参数的代码:

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那样输出

2 个答案:

答案 0 :(得分:2)

priority_queue始终以最大元素(最高优先级)开头,例如here

答案 1 :(得分:0)

作为比较器函数,问题将是“按照我们的顺序,第一个参数是否在第二个参数之前?” (根据cppreference.com)。因此,如果要按升序排序,则应比较p1.height > p2.height

通常,您的原始代码可以使用,但是,由于这是一个优先级队列,因此顺序将相反(如p1.height > p2.height)。