優先佇列學習

2022-05-06 15:36:09 字數 1392 閱讀 3615

一、相關定義

優先佇列容器與佇列一樣,只能從隊尾插入元素,從隊首刪除元素。但是它有乙個特性,就是佇列中最大的元素總是位於隊首,所以出隊時,並非按照先進先出的原則進行,而是將當前佇列中最大的元素出隊。這點類似於給佇列裡的元素進行了由大到小的順序排序。元素的比較規則預設按元素值由大到小排序,可以過載「<」操作符來重新定義比較規則。

二、priority_queue

基本操作:

empty()      如果隊列為空,則返回真

pop()    刪除對頂元素,刪除第乙個元素

push()        加入乙個元素

size()      返回優先佇列中擁有的元素個數

top()     返回優先佇列對頂元素,返回優先佇列中有最高優先順序的元素

在預設的優先佇列中,優先順序高的先出隊。在預設的int型中先出隊的為較大的數。

標頭檔案:

#include 

下面看最基本的用法:從大到小輸出

#include #include

#include

using

namespace

std;

intmain()

cout

<<"

採用預設優先關係:

"

從大到小的順序

cout

}

下面是按照從小到大輸出  greater的用法

#include #include

#include

#include

using

namespace

std;

intmain()

cout

<<"

採用greater的優先關係:

"

從小到大輸出

cout

}

下面看結構體的使用

#include #include

#include

#include

using

namespace

std;

struct

number1

*/friend

bool

operator

<(number1 a,number1 b)

};int

main()

cout

<<"

採用結構體定義的優先關係:

"

從小到大

cout

}

佇列 優先佇列的學習

佇列定義 佇列是限定只能在表尾進行 插入,在表頭進行刪除的線性表 隊尾 允許插入的一端 隊頭 允許刪除的一端 佇列的定義 include queue 標頭檔案 using namespace std 需要加上使用名稱 空間,和sort 排序函式是一樣的。queue int q 格式 queue 型別...

優先佇列學習總結

普通的佇列,遵循先進先出的規則,進行元素的新增和查詢,但是對於很多情況下,我們想要在序列中找符合我們要求的元素 比如序列中最大的元素 這時候,無論是普通的線性表還是線性表中比較特殊的棧或者佇列,找到該指定元素的範圍都會卡在時間複雜度為o n 的級別,其實我們完全可以實現查詢時間複雜度降為o 1 就是...

優先佇列學習總結

佇列 現實中我們最常見的是,去醫院 去銀行取錢,一般都需要排隊,這就是佇列,佇列有乙個最顯著的特徵 先進先出,一般情況下,大多都是先到先辦理,但是也是有特殊的情況,例如在醫院,萬一來個急診的,一定是急診的優先,或者在銀行,來個vip,有綠色通道。這種特殊的情況下,就是佇列中的特殊的佇列 優先佇列。它...