STL 优先队列 priority_queue

优:自动排序(如何实现 不会)

①优先队列的头文件&&声明

首先,你需要

#include<queue>
using namespace std;

这两个头文件。

②其次,一个优先队列声明的基本格式是:
priority_queue<结构类型> 队列名;
比如:

priority_queue <int> i;
priority_queue <double> d;

不过,我们最为常用的是这几种:

priority_queue <node> q;
//node是一个结构体
//结构体里重载了‘<’小于符号
priority_queue <int,vector<int>,greater<int> > q;
//不需要#include<vector>头文件
//注意后面两个“>”不要写在一起,“>>”是右移运算符
priority_queue <int,vector<int>,less<int> >q;

优先队列不能直接定义结构体:(like this)

priority_queue <node,vector<node>,greater<node> >q;

原因是 greater < node > 没有定义,如果想用这种方法定义
则可以按如下方式:

#include <iostream>
#include <queue> 
using namespace std; 
struct Node{  
	int x, y; 
}node; 
struct cmp{    
	bool operator()(Node a,Node b){        
  		if(a.x==b.x) return a.y>b.y;         
  		return a.x>b.x;
	} 
}; 
int main(){    
	priority_queue<Node,vector<Node>,cmp>q;   
    for(int i=0;i<10;i++){     
    	node.x=i;      
    	node.y=10-i/2;   
    	q.push(node);     
    }      
    while(!q.empty()){        
    	cout<<q.top().x<<' '<<q.top().y<<endl;         
    	q.pop();
	}    
	return 0;
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值