當(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也需要定義兩個模板參數(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/

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