- 排序:
less<T>
变成升序(从左到右遍历下标时,数组元素是从小到大)greater<T>
变成降序(从左到右遍历下标时,数组元素是从大到小) - 建堆:
less<T>
变成大顶堆(从上层到下层,堆元素是从大到小,同层之间随便)greater<T>
变成小顶堆(从上层到下层,堆元素是从小到大,同层之间随便) -
priority_queue<int> :是默认的大根堆实现,top()是当前优先队列的最大值。
-
priority_queue<int,vector<int>,greater<int> >是 最小值的优先队列,top() 是当前优先队列的最小值。注意"> >",因为不写空格可能编译器会解释为右移操作符">>"。
-
priority_queue<int,vector<int>,less<int> >是 最大值的优先队列,top() 是当前优先队列的最大值。
-
模板里面有三个参数,第一个为元素的类型,第二个为所使用的容器(vector或deque),第三个为一个比较的规则,决定是最大优先队列还是最小优先队列,默认的less为最大优先队列,实现方式是最大堆,greater为最小优先队列,实现方式是最小堆,结构都是二叉树。
greater()、less()、priority_queue的用法
于 2023-08-14 09:45:26 首次发布