C++STL特殊容器priority_queue
在了解priority_queue(優先隊列)前,可以先去瞅瞅queue,下面是傳送門啦>——<
傳送門
priority_queue的基本性能
class priority_queue<>實現出一個queue,只不過其中的元素依照優先級被讀取。priority_queue的接口與queue非常相近,只不過在插入元素后priority_queue會自動為元素排序,默認排序是operator <形成降序排列,也就是說,隊首的元素默認是最大的元素,我們在彈出元素時,就會彈出最大的那個元素。值得注意的是,如果同時存在若干個數值最大的元素,我們無法確知究竟哪一個會入選。
priority_queue使用須知
1.包含頭文件
#include<queue>2.在頭文件<queue>中,class?priority_queue 定義如下
namespace std {template <typename T,typename Container = vector<T>typename Compare = less<typename Container::value_type>>class priority_queue; }第一個template參數是元素類型,帶有默認值的第二個template參數定義了priority_queue內部用來存放元素的容器,默認容器為vector,帶有默認值的第三個template參數定義出“用以查找下一個最高優先級元素”的排序準則,默認以operator<作為比較標準。
但實際上,你可以用任何sequence容器支持priority_queue,只要他們支持random-access iterator和front()、push_back()、pop_back()等操作就行。由于priority_queue用到了STL heap算法,所以容器必須支持random-access。
priority_queue核心操作
1.核心接口成員函數
push() //將一個元素放入priority_queue中 top() //返回priority_queue的一個隊首元素,但是不刪除它 pop() //刪除priority_queue的一個隊首元素,但是不返回它2.建立一個升序排序準則的priority_queue
priority_queue<int,vector<int>,greater<int> > pq; //建立一個容器為vector名為 pq 的 priority_queue3.priority_queue的具體操作
#include<iostream> #include<queue> //必不可少的頭文件們 using namespace std; int main() {//創建一個容器為string的優先隊列priority_queue<string> pq1;//插入三個字符串pq1.push("AWSL");pq1.push("WSND");pq1.push("NMSL");//打印優先隊列cout << "priority_queue pq1:" << endl;cout << "now pq1.size is: ";cout << pq1.size() << endl;cout << "從隊首開始彈出pq1的元素" << endl;cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;pq1.pop();cout << pq1.top() << endl;pq1.pop();cout << "now pq1.size is: ";cout << pq1.size() << endl;cout << endl;//-----------------------------------//創建一個容器默認但是排序準則為升序的優先隊列priority_queue<int, vector<int>, greater<int> > pq2;//插入三個數字pq2.push(4396);pq2.push(777);pq2.push(250);//打印優先隊列cout << "priority_queue pq2:" << endl;cout << "now pq2.size is: ";cout << pq2.size() << endl;cout << "從隊首開始彈出pq2的元素" << endl;cout << pq2.top() << endl;pq2.pop();cout << pq2.top() << endl;pq2.pop();cout << pq2.top() << endl;pq2.pop();cout << "now pq2.size is: ";cout << pq2.size() << endl; }本文留下了一個小bug,等待初學者自己去發現喲,嘻嘻嘻/*-*\
?
轉載于:https://www.cnblogs.com/cloudplankroader/p/10394252.html
總結
以上是生活随笔為你收集整理的C++STL特殊容器priority_queue的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 冰原守卫者经验副本怎么解锁
- 下一篇: 炉石传说新版本佣兵模式恩佐斯怎么构筑卡组