优先级队列是根据元素的优先级被读取。
程序员可以通过template参数指定一个排序准则。缺省的排序准则是利用operator< 形成降序排列,那么所谓“下一个元素”就是“数值最大的元素”。
头文件:
#include<queue>
核心接口
push() 将一个元素置于priority queue中
top() 返回priority queue中的“下一个元素”
pop() 从priority queue 中移除一个元素
注意:如果priority queue 内没有元素,执行top()和pop()会导致未定义的行为,应该先采用size()或empty()来检验容器是否为空。
例子:
#include <iostream>
#include <queue>
using namespace std ;
int main()
{
priority_queue<float> q;
q.push (66.6);
q.push (22.2);
q.push (44.4);
// read and print two elements
cout << q.top () << ' '; //此处是66.6
q.pop (); //pop 也是66.6
cout << q.top () << endl; //此处是44.4
q.pop (); //此处是44.4
q.push (11.1);
q.push (55.5);
q.push (33.3);
// skip one element
q.pop (); //此处是55.5
// pop and print remaining elements
while (!q.empty ()) {
cout << q.top () << ' '; //依次是33.3 22.2 11.1
q.pop ();
}
cout << endl ;
return 0;
}