介绍
英文名-priority_queue队首元素为当前优先级最高的
访问
只能通过top()函数来访问队首元素
#include <iostream>
#include <queue>//调用queue头文件
using namespace std;
int main(){priority_queue<int> pq1;//定义:默认数字越大优先级越高,相当于priority_queue<int,vector<int>,less<int>> pq2//vector-用来承载堆的容器,相当于按数字越小优先级越高的整型队列priority_queue<int,vector<int>,greater<int>> pq2;cout<<pq1.top()<<endl;//访问return 0;
}
常用函数
1.push(x):将x入队
2.top():获得队首元素
3.empty():判断是否为空
4.size():返回队内元素个数
#include <iostream>
#include <queue>//调用queue头文件
using namespace std;
int main(){priority_queue<int> pq;priority_queue<int,vector<int>,greater<int>> q;for(int i=0;i<5;i++){pq.push(i);//top取到最大q.push(i);//top取到最小}cout<<pq.top()<<" "<<q.top()<<endl;return 0;
}
实例
通过水果的价格为水果进行排序,输出价格最便宜的水果
1.通过重载符号实现
#include <iostream>
#include <queue>
using namespace std;
struct fruit{string name;double price;friend bool operator < (fruit a,fruit b){//将整型的<符号重载为fruit中的>符号,使得默认大数字优先改为小数字优先return a.price>b.price;}
}f1,f2;
int main(){priority_queue<fruit> q;cin>>f1.name>>f1.price>>f2.name>>f2.price;q.push(f1);q.push(f2);cout<<q.top().name<<" "<<q.top().price<<endl;return 0;
}
2.通过外部结构体函数实现
#include <iostream>
#include <queue>
using namespace std;
struct fruit{string name;double price;
}f1,f2;
struct cmp{//结构体封装()运算符bool operator () (fruit a,fruit b){return a.price>b.price;}
};
int main(){priority_queue<fruit,vector<fruit>,cmp> q;cin>>f1.name>>f1.price>>f2.name>>f2.price;q.push(f1);q.push(f2);cout<<q.top().name<<" "<<q.top().price<<endl;return 0;
}```