当前位置 博文首页 > queue基础_白徽的博客:优先队列--priority
//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;
}
};
cs