C ++中std :: priority_queue的比较器部分的含义是什么?

时间:2018-10-28 14:45:42

标签: c++

C ++中的优先级队列语法:

priority_queue <Type, vector<Type>, ComparisonType > min_heap;

如果要声明最大堆,请使用std::less,否则使用std::greater(最小堆)。我不太明白为什么std::less导致最大堆,而std::greater导致最小堆?

1 个答案:

答案 0 :(得分:2)

来自cppreference的引言解释了这个概念:

  

比较-提供严格的弱排序的比较类型。

     

请注意,定义Compare参数以使其返回true   如果它的第一个参数在弱点中在第二个参数之前   订购。但是因为优先级队列输出最大的元素   首先,实际上是“先于”的元素最后输出。那   是,根据该队列的前面包含“ last”元素   比较所施加的弱排序。