在STL中,有一个优先级队列的类模板priority_queue,它包含在头文件queue中。这个类模板是用二叉堆实现的。类模板priority_queue是一个容器适配器,它有三个模板参数:队列中的元素类型,底层存储二叉堆的容器类型、最大堆还是最小堆。第二、三个参数是保存在vector中。第三个参数默认是最大堆,即数值越大,优先级越高。主要成员函数有:
(1) void push(const object& x): 入队
(2) const object& top()const: 返回队头元素
(3) void pop(): 队头元素出队
(4) bool empty(): 检查队列是否为空
(5) void clear(): 清除所有元素
#include<iostream>
#include<queue>
#include<ctime>
#include<cstdlib>
using namespace std;
int main(){
priority_queue<int>q; // or priority<int, vector<int>, greater<int>>q
int count,i=0;
cout<<"Please input the number of members:";
cin>>count;
while(i<count){
q.push(rand());
i++;
}
while(!q.empty()){
cout<<q.top()<<" ";
q.pop();
}
return 0;
}
//output
Please input the number of members:12
29358 28145 26962 26500 24464 19169 18467 15724 11478 6334 5705 41