deque queue and priority_queue
deque queue and priority_queue
stl-deque
deque 是雙端隊列,可實現棧與隊列的操作。
deque支持deque_ob[i] 形式的隨機存取。
stl-queue
queue的基本操作有:
入隊,如例:q.push(x); 將x 接到隊列的末端。
出隊,如例:q.pop(); 彈出隊列的第一個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最早被壓入隊列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入隊列的元素。
判斷隊列空,如例:q.empty(),當隊列空時,返回true。
查詢當前容量,如例:q.size();
不支持[i]下標隨機訪問和clear()函數。
stl-priority_queue
普通的隊列是一種先進先出的數據結構,元素在隊尾進隊而從隊頭出隊。在優先隊列中,元素被賦予優先級,最大(或最小)的元素在隊頭。
對於自定義的結構體,重載'<'(小於號)就會保證隊頭元素當前最大,即降序排序。這與sort剛好相反。
頭文件為<queue>。此類沒有clear()成員函數,隻能逐個pop()。
常用的操作如下:
empty() 如果優先隊列為空,則返回真
pop() 刪除第一個元素
push() 加入一個元素
size() 返回優先隊列中擁有的元素的個數
top() 返回優先隊列中有最高優先級的元素
#include<iostream>
#include<queue>
using namespace std;
int main(){
priority_queue<int ,vector<int>,greater<int>> q;
q.push(3);q.push(1);q.push(2);
for(;!q.empty();q.pop()) cout<<q.top();
cout<<endl;
{
priority_queue<int ,vector<int>> q;
q.push(3);q.push(1);q.push(2);
for(;!q.empty();q.pop()) cout<<q.top();
}//此對括號作用域內的q不會與上麵的q衝突
return 0;
}
/*下麵是priority_queue的定義
template<typename _Tp, typename _Sequence = vector<_Tp>,
typename _Compare = less<typename _Sequence::value_type> >
class priority_queue{};
*/
/*123
321
Process returned 0 (0x0) execution time : 0.124 s
Press any key to continue.
*/
最後更新:2017-04-03 12:56:01
上一篇:
stl-vector
下一篇:
查找與散列(Hash)
使用Java調用Oracle數據庫的存儲過程實例
戰勝柯潔後,AI在悄悄潛入人類下一個智慧堡壘
Java中的隨機數生成器:Random,ThreadLocalRandom,SecureRandom
spring-boot+spring-session集成
阿裏雲大學安全課程-阿裏雲首席安全研究員吳瀚清:WannaCry事件最“細思恐極“的一個事實是?
【 Release Notes】CodePipeline 產品更新
Java麵向對象高級--final關鍵字
Apache下實現禁止目錄瀏覽
Wi-Fi曝安全漏洞 麵臨KRACK攻擊風險
Spring Cloud 接入 EDAS 之服務發現篇