greater()、less()、priority_queue的用法

  1. 排序:
    less<T>变成升序(从左到右遍历下标时,数组元素是从小到大
    greater<T>变成降序(从左到右遍历下标时,数组元素是从大到小
  2. 建堆:
    less<T>变成大顶堆(从上层到下层,堆元素是从大到小,同层之间随便)
    greater<T>变成小顶堆(从上层到下层,堆元素是从小到大,同层之间随便)
  3. priority_queue<int> :是默认的大根堆实现,top()是当前优先队列的最大值。

  4. priority_queue<int,vector<int>,greater<int> >是 最小值的优先队列,top() 是当前优先队列的最小值。注意"> >",因为不写空格可能编译器会解释为右移操作符">>"。

  5. priority_queue<int,vector<int>,less<int> >是 最大值的优先队列,top() 是当前优先队列的最大值。

  6. 模板里面有三个参数,第一个为元素的类型,第二个为所使用的容器(vector或deque),第三个为一个比较的规则,决定是最大优先队列还是最小优先队列,默认的less为最大优先队列,实现方式是最大堆,greater为最小优先队列,实现方式是最小堆,结构都是二叉树。

  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值