當(dāng)前位置:首頁 > IT技術(shù) > Web編程 > 正文

關(guān)于queue(原文鏈接:https://blog.csdn.net/chao_xun/article/details/8037438)
2021-09-11 10:31:04

一、頭文件<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/

開通會(huì)員,享受整站包年服務(wù)立即開通 >