优先队列--priority_queue基础

基础法门

对基本数据类型的操作

//reviem the priority_queue

#include <iostream>
#include <queue>//头文件 
using namespace std;

int  main(void)
{
	//定义 priority_queue<typename> name;
	//默认为从大到小的队列。 
	priority_queue<int> que;
	
	//name.push(x)--进队
	//函数的时间复杂度O(logN) 
	que.push(2);
	que.push(3);
	que.push(3);
	que.push(4);
	
	
	//name.top()--返回队头元素 
	//没有front和back()函数,top函数的时间复杂度O(1) 
	cout<<que.top()<<endl;
	
	
	//name.pop();--出队
	//函数的时间复杂度O(logN)
	//不能输出它的返回值! 
	que.pop(); 
	que.pop();
	
	//name.size()--元素有多少
	//函数的时间复杂度O(1) 
	cout<<que.size()<<endl;
	
	que.pop(); 
	que.pop();
	
	//判空--返回bool 
	//函数的时间复杂度O(1) 
	if(que.empty())cout<<"Is empty"<<endl;
	
	//设置优先级--第三个如果是less<typename> 是值大的优先,greater<int> 值小的优先 
	//priority_queue<typename,vector<typename>,less<typename> > name;
	priority_queue<int,vector<int>,greater<int> > vi;
	
	vi.push(2);
	vi.push(6);
	vi.push(4);
	
	for(int i = vi.size();i > 0;i--){
		cout<<vi.top()<<endl;
		vi.pop();
	} 
	
	return 0;
}

对结构体的操作

//reviem the priority_queue

#include <iostream>
#include <queue>//头文件 
using namespace std;

//存入优先队列的数据如果是结构体得对其进行运算符重载
//从大到小 
struct fruit{
	int price;
	string name;
	friend operator < (fruit f1,fruit f2){
		return f1.price < f2.price;
	}
};

int  main(void)
{
	priority_queue<fruit> vi;
	fruit f1;
	f1.name = "apple";
	f1.price = 2;
	
	fruit f2;
	f2.name = "orange";
	f2.price = 3;
	
	fruit f3;
	f3.name = "potato";
	f3.price = 1;
	
	vi.push(f1);
	vi.push(f2);
	vi.push(f3);
	
	for(int i = vi.size();i > 0;i--){
		cout<<vi.top().name<<' '<<vi.top().price<<endl;
		vi.pop();
	}
	
	return 0;
}
//不可以重载大于号,只能是小于号
//从小到大 
struct gal{
	int price;
	string name;
	friend operator < (gal f1,gal f2){
		return f1.price > f2.price;
	}
};
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值