优先队列也是一种从一端入队,另一端出队的队列。不同于一般队列的是,队列中最大的元素总是位于队首位置,因此,元素的出队并非按照先进先出的要求,将最先入队的元素出队,而是将当前队列中的最大元素出队。
STL优先队列的泛化,底层默认采用vector向量容器,使得队列容器的元素可做数组操作,从而应用堆算法找出当前队列最大元素,并将它调整到队首位置,确保最大元素先出队。
堆算法(heap algorithm)具有nlog(n)阶的算法时间复杂度
一、priority_queue技术原理
大根堆
小根堆
二、priority_queue应用基础
#include <queue>
1、创建priority_queue对象
priority_queue()
priority_queue(const priority_queue &)
2、元素入队
void push(const value_type &x)
3、元素出队
void pop()
4、取队首元素
const value_type& top() const
5、队列非空判断
bool empty()
6、队列的大小
size_type size()