比较器函数在优先队列中的工作

working of comparator function in 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

A priority_queue 总是从最大的元素开始(最高优先级),参见例如here.

作为比较器函数,问题将是"Does the first argument come before the second argument in our order?"(根据cppreference.com)。因此,如果要按升序排序,应该比较p1.height > p2.height

通常情况下,您的原始代码会起作用,但是,由于这是一个优先级队列,顺序将相反(如 p1.height > p2.height)。