優先佇列(基本)
阿新 • • 發佈:2019-02-19
優先佇列
1.簡介
普通的佇列是一種先進先出的資料結構,元素在佇列尾追加,而從佇列頭刪除。在優先佇列中,元素被賦予優先順序。當訪問元素時,具有最高優先順序的元素最先刪除。優先佇列具有最高階先出 (first in, largest out)的行為特徵。
2.標頭檔案
#include<queue>
using namespace std;
3.宣告
宣告的話有兩種簡單的方式
priority_queue<inpriority_queue<int/*佇列型別*/,vector<int>/*儲存地址*/,less<int> >q;//優先返回最大值
priority_queue<inpriority_queue<int,vector<int>,greater<int> >q;//優先返回最小值
下面這種其實就是上面第一種的簡化版
priority_queue<int>q;
4.基本操作
q.size();//返回q裡元素個數
q.empty();//返回q是否為空,空則返回1,否則返回0
q.push(k);//在q的末尾插入k
q.pop();//刪掉q的第一個元素
q.top();//返回q的第一個元素
q.back();//返回q的末尾元素
最後附上一個程式
#include<iostream> #include<cstdio> #include<cstdlib> #include<cmath> #include<cstring> #include<string> #include<queue> #include<algorithm> using namespace std; int main() { priority_queue<int>q; q.push(1); q.push(30); q.push(12); q.push(5); while(!q.empty()){ int n=q.top();q.pop(); cout<<n<<" "; } return 0; }
這個程式意思大概就是在這個優先佇列裡依次插入1、30、12、5,再輸出。
輸出:
30 12 5 1