priority_queue

priority_queue又稱為優(yōu)先隊(duì)列,其底層是用來進(jìn)行實(shí)現(xiàn)的。在優(yōu)先隊(duì)列中,隊(duì)首元素一定是當(dāng)前隊(duì)列中優(yōu)先級最高的那一個。

當(dāng)然,可以在任何時候往優(yōu)先隊(duì)列里面加入(push)元素,而優(yōu)先隊(duì)列底層的數(shù)據(jù)結(jié)構(gòu)堆(heap)會隨時調(diào)整結(jié)構(gòu),使得每次的隊(duì)首元素都是優(yōu)先級最大的。

定義:priority_queue<typename> name;

和隊(duì)列不一樣的是,優(yōu)先隊(duì)列沒有front()和back()函數(shù),而只能通過top()函數(shù)來訪問隊(duì)首元素。

(1)push()

(2)top():可以獲得隊(duì)首元素(即堆頂元素)

(3)pop():隊(duì)首元素(即堆頂元素)出隊(duì)


(4)empty():和queue一樣

(5)size():


priority_queue優(yōu)先級的設(shè)置:

下面介紹基本數(shù)據(jù)類型和結(jié)構(gòu)體類型的優(yōu)先級設(shè)置方法

①基本數(shù)據(jù)類型的優(yōu)先級設(shè)置

priority_queue<int, vector<int>, less<int> > q; ? ? ? ? //less<int>表示數(shù)字大的優(yōu)先級越大,而greater<int>表示數(shù)字小的優(yōu)先級越大

priority_queue<int, vector<int>, greater<int> > q; ? ?//vector<int>是用來承載底層數(shù)據(jù)結(jié)構(gòu)堆(heap)的容器


②結(jié)構(gòu)體的優(yōu)先級設(shè)置


完整示例:


此處小于號的重載于排序函數(shù)sort中的cmp函數(shù)有些類似。事實(shí)上,兩者的作用確實(shí)是類似的,只不過效果看上去似乎是“相反”的。在排序中,如果是“return f1.price > f2.price”,那么則是按價格從高到低排序,但是在優(yōu)先隊(duì)列中卻是把價格低的放到隊(duì)首。原因在于,優(yōu)先隊(duì)列本身默認(rèn)的規(guī)則就是優(yōu)先級高的放在隊(duì)首,因此把小于號重載為大于號的功能時只是把這個規(guī)則反向了一下。如果讀者無法理解,那么不妨記住,優(yōu)先隊(duì)列的這個函數(shù)與sort中的cmp函數(shù)的效果是相反的。


有沒有辦法跟sort中的cmp函數(shù)那樣寫在結(jié)構(gòu)體外面呢?

自然是有辦法的,只需把friend去掉,把小于號改成一對小括號,再把重載的函數(shù)寫在結(jié)構(gòu)體外面,同時將其用struct包裝起來。


?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • queue 先進(jìn)先出容器這一塊在數(shù)據(jù)結(jié)構(gòu)中詳細(xì)介紹 不作具體累述 定義 queue的訪問 由于隊(duì)列本身就是一種先進(jìn)...
    荷包蛋要三分熟閱讀 245評論 0 0
  • priority_queue 優(yōu)先隊(duì)列,其底層是用堆來實(shí)現(xiàn)的。在優(yōu)先隊(duì)列中,隊(duì)首元素一定是當(dāng)前隊(duì)列中優(yōu)先級最高的那...
    小幸運(yùn)Q閱讀 276評論 0 0
  • 1、Queue的使用(FIFO)(使用LinkedList實(shí)現(xiàn)) Queue使用時要盡量避免Collection的...
    暑水閱讀 541評論 0 0
  • (1)queue和priority_queue的區(qū)別 普通的隊(duì)列是一種先進(jìn)先出的數(shù)據(jù)結(jié)構(gòu),元素在隊(duì)列尾追加,而從隊(duì)...
    __bba3閱讀 961評論 0 0
  • 今天感恩節(jié)哎,感謝一直在我身邊的親朋好友。感恩相遇!感恩不離不棄。 中午開了第一次的黨會,身份的轉(zhuǎn)變要...
    余生動聽閱讀 10,840評論 0 11

友情鏈接更多精彩內(nèi)容