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