一、頭文件<queue>
queue與stack模板非常類似,queue也需要定義兩個模板參數(shù),一個是元素類型,另外一個是容器類型,元素類型是必要的,容器類型是可選的,默認(rèn)為dqueue類型
定義queue類型對象的事例代表如下:
queue<int>q1;
queue<double>q2;
queue的基本操作有:
1.入隊:如q.push(x)將x元素接到隊列的末端
2.出隊:如q.pop()彈出隊列的第一個元素,并不會返回元素的值;
3.訪問隊首元素q.front()
4.訪問隊尾元素:q.back()
5.訪問隊伍的長度q.size()
二、優(yōu)先隊列
在<queue>頭文件中,還定義了一個非常有用的模版類priority_queue(優(yōu)先隊列),優(yōu)先隊列與隊列的差別在于優(yōu)先隊列不是按照入隊的順序出隊,而是按照隊列中元素的優(yōu)先權(quán)順序出隊(默認(rèn)為大者優(yōu)先,也可以通過指定算子來指定自己的優(yōu)先順序)。
priority_queue模版類有三個模版參數(shù),元素類型,容器類型,比較算子。其中后兩個都可以省略,默認(rèn)容器為vector,默認(rèn)算子為less,即小的往前排,大的往后排(出隊時序列尾的元素出隊)。
定義priority_queue對象的示例代碼如下:
priority_queue<int >q1;
priority_queue<pair<int,int> >q2;
priority_queue<int,vector<int>,greater<int> >q3;//定義小的先出隊
priority_queue的基本操作均與queue相同
初學(xué)者在使用priority_queue時,最困難的可能就是如何定義比較算子了。如果是基本數(shù)據(jù)類型,或已定義了比較運(yùn)算符的類,可以直接用STL的less算子和greater算子——默認(rèn)為使用less算子,即小的往前排,大的先出隊。如果要定義自己的比較算子,方法有多種,這里介紹其中的一種:重載比較運(yùn)算符。優(yōu)先隊列試圖將兩個元素x和y代入比較運(yùn)算符(對less算子,調(diào)用x<y,對greater算子,調(diào)用x>y),若結(jié)果為真,則x排在y前面,y將先于x出隊,反之,則將y排在x前面,x將先出隊。
本文摘自 :https://www.cnblogs.com/