头文件:<queue>
函数名 | 功能 | 函数原型 |
empty | 判断优先队列是否为空,空返回true,否则返回false | bool empty() const |
size | 返回优先队列中元素的个数 | size_type size() const |
top | 返回优先级最高的元素 | const T& top ( ) const |
push | 向优先队列中添加元素 | void push(const T &x) |
pop | 优先级最高的元素出队 | void pop() |
由于优先队列还涉及到优先级的设置,因此本文除了给出优先队列的操作外,还对优先级的设置进行说明。
priority_queue类模板
template < class T, class Container = vector<T>,
class Compare = less<typename Container::value_type> > class priority_queue;参数说明:
参数1:T 说明优先队列中元素的类型,可以是基本数据类型,也可以是用户自定义数据类型
参数2:Container 说明实现优先队列的底层容器,默认是vector
参数3:Compare 说明优先队列的优先原则,即值大优先还是值小优先,特别注意此处实际表示的是!Compare。默认是less,less<T>是一个表示值小优先的结构体的类模板,由!Compare可知优先队列默认值大优先
设置优先原则的方法
情况一:元素为用户自定义数据类型
值小优先:重载<运算符为大于含义
值大优先:重载<运算符为小于含义
注:这样重载是由于优先队列的第三个参数实际表示的是!Compare的缘故
重载好后即可按如下方式定义:
priority_queue<T> que;
T为自定义数据类型
情况二:元素为基本数据类型
值小优先:使用与less<T>相反的greater<T>
示例:priority_queue<int,vector<int>,greater<int> >que
值大优先:优先队列默认值大优先
示例:priority_queue<int> que
只有第一个参数,后面两个参数使用默认值