头文件:
#include <queue>
可调用函数:
empty() 如果优先队列为空,则返回真
pop() 删除第一个元素
push() 加入一个元素
size() 返回优先队列中拥有的元素的个数
top() 返回优先队列中有最高优先级的元素
泛型的实现:
tmplate<class T,class C,class COM>
//T代表容器存储的类型 C代表底层实现的容器 COM表示优先级规则
class priority_queue{
};//默认是根据自定义类型的 < 比较来确定优先级
应用:
要求:
1、存储学生类型;
2、成绩最高的先出列 成绩一样则按学号出列;
程序示例:
#include <queue>
#include <vector>
#include <list>
#include <deque>
#include <iostream>
using namespace std;
class Com{
public:
int operator()(const int& a,const int& b){
return a>b;
}
};
class Stu{
public:
int no;
string name;
int score;
Stu(int no=0,string name="",int score=0):no(no),name(name),score(score){}
int operator<(const Stu& s)const{
return score < s.score;
}
};
int main(){
priority_queue<Stu> que;
que.push(Stu(110,"马云",90));
que.push(Stu(120,"马化腾",89));
que.push(Stu(130,"马超",98));
que.push(Stu(140,"马哥",70));
while(!que.empty()){
cout << que.top().score << endl;
que.pop();
}
//priority_queue<int> pq;
//priority_queue<int,vector<int> > pq;
//priority_queue<int,list<int> > pq;
priority_queue<int,deque<int>,Com> pq;
pq.push(5);
pq.push(2);
pq.push(7);
pq.push(3);
pq.push(9);
pq.push(8);
cout << pq.size() << endl;
cout << pq.top() << endl;
while(!pq.empty()){
cout << pq.top() << " ";
pq.pop();
}
cout << endl;
return 0;
}