首页 > 解决方案 > C++ 中 std::priority_queue 的比较器部分是什么意思?

问题描述

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

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

如果我想声明一个最大堆,我使用std::less,否则std::greater(最小堆)。我不太明白为什么std::less会导致最大堆和std::greater最小堆?

标签: c++

解决方案


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

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

请注意,Compare 参数被定义为如果它的第一个参数在弱排序中位于其第二个参数之前,则它返回 true。但是因为优先级队列首先输出最大的元素,所以“先来”的元素实际上是最后输出的。也就是说,根据比较强加的弱排序,队列的前面包含“最后一个”元素。


推荐阅读