STL中优先级队列的使用priority_queue


首先,#include<queue>,#include<vector>

一、对于基本类型:
然后,如果是要大的数优先级高,那么这样声明:priority_queue<int, vector<int>, less<int> > PQ;
如果是要小的数优先级高,那么这样: priority_queue<int, vector<int>, greater<int> > PQ; 

其中的vector用list好像会出错,具体原因再去了解

插入用push(1);
取出用top();
弹出用pop();


二、对于结构:
方法一:如果不是基本类型,那么要重载括号运算符,声明还是一样的 priority_queue<Node, vector<Node>, greater<Node> > PQ; 
在Node结构里面添加如下函数:
bool operator < (const Node& other)    const {
return this->elem < other.elem;
 }//没有这个函数,less<Node>则会报错
 bool operator > (const Node& other)    const {
return this->elem > other.elem;
 }//没有这个函数,greater<Node>则会报错


方法二:不用less<Node>和greater<Node>的形式,而是自己来定义,声明的时候这样写: priority_queue<Node, vector<Node>, cmp > PQ;

在外面重新写一个结构,如下:
struct cmp{
bool operator() (const Node& node1, const Node& node2){
return node1.elem < node2.elem;
}
} ;
由此我猜想,STL里面的less<TYPE>和greater<TYPE>应该是重载括号运算符
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值