C++STL容器 - 比较参数结构体

众所周知,C++STL中优先队列priority_queue默认是大根堆。

DIY一个优先队列有很多方法,下面记录一种方法:自定义容器参数之比较结构体。

 

一个优先队列的定义如下:(复制 from stl_queue.h)

 
 
  template<typename _Tp, typename _Sequence = vector<_Tp>,
       typename _Compare  = less<typename _Sequence::value_type> >

 

即,有三个参数:类型、序列、比较,序列的默认值是vector,比较的默认值是less。

如果我们可以自定义比较结构体,自然就可以实现不同操作。

那么问题来了,这种比较结构体怎么写呢?

 

一番查找资料之后,我了解到,它需要在结构体内以bool类型重载"()"运算符。

 

struct cmp_small{
    bool operator ()(const int &a,const int &b){
        return a>b;
        
    }
    
};
    priority_queue<int,vector<int>,cmp_small >srh;

 

 

这样我们就定义了一个小根堆。

 

转载于:https://www.cnblogs.com/Hansue/p/11236440.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值