C ++中的优先级队列语法:
priority_queue <Type, vector<Type>, ComparisonType > min_heap;
如果要声明最大堆,请使用std::less
,否则使用std::greater
(最小堆)。我不太明白为什么std::less
导致最大堆,而std::greater
导致最小堆?
答案 0 :(得分:2)
来自cppreference的引言解释了这个概念:
比较-提供严格的弱排序的比较类型。
请注意,定义Compare参数以使其返回true 如果它的第一个参数在弱点中在第二个参数之前 订购。但是因为优先级队列输出最大的元素 首先,实际上是“先于”的元素最后输出。那 是,根据该队列的前面包含“ last”元素 比较所施加的弱排序。