c++優先佇列(priority_queue)
阿新 • • 發佈:2021-08-12
首先要包含標頭檔案 #include<queue>
優先佇列具有佇列的所有特性,包括佇列的基本操作,只是在這基礎上添加了內部的一個排序,它本質是一個堆實現的。
和佇列基本操作相同
top() 訪問隊頭元素
empty() 判斷佇列是否為空,為空則返回1,否則返回0
size() 返回佇列內的元素個數
push() 再佇列中插入一個元素
pop() 彈出隊頭元素
swap() 交換內容
emplace() 構造一個元素插入佇列
定義:priority_queue<Type, Container, Functional>
Type 就是資料型別,Container 就是容器型別(Container必須是用陣列實現的容器,比如vector,deque等等,但不能用 list。STL裡面預設用的是vector),Functional 就是比較的方式。
預設是大頂堆,降序序列
#include<iostream> #include<algorithm> #include<queue> using namespace std; int main() { //小頂堆,升序排列 priority_queue<int,vector<int>,greater<int>> qa; //大頂堆,降序排列 priority_queue<int,vector<int>,less<int> >qb; for(int i=0;i<9;++i) {qa.push(i);qb.push(i);} //輸出小頂堆的元素 while(qa.size()){ cout<<qa.top()<<" "; qa.pop();} //0 1 2 3 4 5 6 7 8 cout<<endl; //輸出大頂堆的元素 while(qb.size()){ cout<<qb.top()<<" "; qb.pop();} //8 7 6 5 4 3 2 1 0 return(0); }
暫時寫到這裡