一、简单介绍
p r i o r i t y _ q u e u e priority\_queue priority_queue 是一个容器适配器, 默认的底层实现的容器是$std::vector\ $ ,主要实现的操作是应用堆(二叉树)操作实现的。
p r i o r i t y _ q u e u e priority\_queue priority_queue类将对其元素进行排序,以便最大的元素始终位于顶部位置。 它支持元素的插入以及顶部元素的检查和删除。 可以在脑海中将其类比为按年龄、身高或其他标准排队的人。
二、定义与使用
-
默认构造方式
-
priority_queue(); priority_queue <int> q1; //默认情况,队列的实现基于vector容器
-
-
指定底层实现方式
-
explicit priority_queue(const Traits& _comp); //explicit关键词主要用于阻止某些类型的隐式换成一次性构造 //用于定义比较的方式 priority_queue <int, vector<int>, greater<int> > q3;
-
-
拷贝构造
-
priority_queue(const priority_queue& right); priority_queue <int> q4( q1 );
-
-
拷贝其他类型的指定区域的元素
-
template <class InputIterator> priority_queue(InputIterator first, InputIterator last); priority_queue <int> q5( v5.begin( ), v5.begin( ) + 2 ); //进阶 设置排序方式 template <class InputIterator> priority_queue(InputIterator first, InputIterator last, const Traits& _comp);
-
三、遍历方式
s t d : : p r i o r i t y _ q u e u e std::priority\_queue std::priority_queue 不提供遍历内部元素的标准方法。因为它是一个队列的数据结构($queue\ $),只可以访问、添加或删除其顶部的元素(最大值或最小值,取决于优先队列的排序方式)
四、相关函数
-
empty 函数
-
bool empty() const; //如果 priority_queue 为空,则为 true;如果 priority_queue 不为空,则为 false
-
-
pop函数
-
void pop(); //从顶部位置移除 priority_queue 的最大元素。
-
-
push函数
-
void push(const Type &val); //基于来自 operator< 的元素的优先级将元素添加到优先级队列。
-
-
size 函数
-
size_type size() const; //返回 priority_queue 中的元素数量
-
-
top函数
-
const_reference top() const; //返回对 priority_queue 顶部的最大元素的常量引用
-