【C++】STL——容器介面卡
阿新 • • 發佈:2019-01-11
1、stack
2、priority_queue #include<queue>
(1)基礎介紹
priority_queue 優先佇列,其底層是用堆來實現的。
模板宣告帶有三個引數:
priority_queue<Type, Container, Functional>
其中Type為資料型別, Container 為儲存資料的容器,Functional 為元素比較方式。
Container必須是用陣列實現的容器,比如 vector, deque 但不能用 list.
STL裡面預設用的是 vector.比較方式預設用 operator< , 所以如果你把後面倆個引數預設的話,
預設的優先佇列就是大頂堆,隊頭元素最大。
//等價 最大優先佇列
priority_queue<int> q;
priority_queue<int,vector<int>,less<int> >;//後面有一個空格
其中第二個引數( vector ),是來承載底層資料結構堆的容器,第三個引數( less ),則是一個比較類,less 表示數字大的優先順序高,而 greater 表示數字小的優先順序高。
//最小優先佇列 隊頭最小
priority_queue<int,vector<int>,greater<int > >q;
優先順序佇列佇列是先進先出的一種資料結構,優先順序佇列是按照優先順序大小pop出佇列(2)主要操作:empty():如果佇列為空,返回truepop():刪除佇列頂部元素push():佇列中加入一個元素top():檢視佇列頂部元素size():返回佇列中元素的個數容器預設是vector,比較方式預設是less,預設比較是operator< ,產生的結果預設是大根堆(最大堆)(3)幾種宣告方法:priority_queue<int> pq1; //大根堆priority_queue<int, vector<int>, greater<int> > pq2; //知道如何產生小根堆(最小堆)了吧?