为什么priority_queue使用greater<>来升序排列?
由于c++ STL中的sort()方法使用greater<>()作为第三个参数来进行降序排列 让我感到困惑的是,priority_queue 使用更大<> 来表示相反的顺序。
为什么以及如何以这种方式工作? 我不明白同一个更大的结构如何根据其使用地点的不同表现出不同的行为。
sort<temp.begin(),temp.end(),greater<>()>; // -> descending order
priority_queue<int,vector<int>,greater<int>>; // -> ascending order
您对优先级队列的含义的思考是错误的。当您从优先级队列中删除某个项目时,您将删除“最高”优先级的项目。是的,优先级队列使用排序函子,但该排序函子仅表示哪个项目具有更高的优先级。 你不应该将排序函子视为“排序”;它只是比较元素的相对优先级。
相同的更大结构
它们没有“相同的更大结构”。
sort
是一种算法;它对一系列元素进行操作。
priority_queue
是一个容器适配器;它是一个元素序列。 sort
做一件事就结束了。 priority_queue
是事情。