c++ - C++ 中 std::priority_queue 的比较器部分是什么意思?
问题描述
C++ 中的优先级队列语法:
priority_queue <Type, vector<Type>, ComparisonType > min_heap;
如果我想声明一个最大堆,我使用std::less
,否则std::greater
(最小堆)。我不太明白为什么std::less
会导致最大堆和std::greater
最小堆?
解决方案
来自cppreference的引用解释了这个概念:
比较 - 提供严格弱排序的比较类型。
请注意,Compare 参数被定义为如果它的第一个参数在弱排序中位于其第二个参数之前,则它返回 true。但是因为优先级队列首先输出最大的元素,所以“先来”的元素实际上是最后输出的。也就是说,根据比较强加的弱排序,队列的前面包含“最后一个”元素。
推荐阅读
- mongodb - MongoDB聚合合并和检索
- python - 通用代码中某些列的一阶差分
- c - 为什么没有类型转换警告?
- java - Youtube 播放器 API 访问被拒绝找到属性
- laravel - 令人困惑的 Laravel 路线
- rstudio - 在 RStudio 中自定义拼写检查突出显示颜色
- swift - 如何在拖放区域中接受目录?
- python - Python:遍历字符串列表并将它们与类对象相关联
- python - 如何将使用 tensorflow 构建的模型转换为 keras api?
- python - 如何配置 viewsets.ModelViewSet 以使用请求正文中传递的参数进行过滤。(Django 休息框架)