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