优先级队列是一个拥有权值概念的单向队列,在这个队列中,所有元素是按优先级排 的。 优先队列容器也是一种从一端入队,另一端出对的队列。不同于一般队列的是,队列中最大的元素总是位于队首位置,因此,元素的出对并非按照先进先出的要求,将最先入队的元素出对,而是将当前队列中的最大元素出对。 C++ STL 优先队列的泛化,底层默认采用 vector 向量容器,使得队列容器的元素可做数组操作,从而应用堆算法找出当前队列最大元素,并将它调整到队首位置,确保最大元素出队。 priority_queue函数列表 构造函数: priority_queue<类型>c //创建一个空的priority_queue 数据访问与添加和删除: c.top() //返回队列头部元素 c.push() //在队列尾部添加元素 c.pop() //队列头部数据出队 其他操作: c.empty() //判断队列是否为空 c.size() //返回队列中数据的个数 有上面函数可以看出其实STL中许多成员函数都是相似的。 同样的priority_queue队列包含在queue头文件中 代码:
1 |
|
实现: