如何定義優先佇列內元素的優先順序是運用好優先順序的關鍵,下面分別介紹基本資料型別(例如int、double、char)與結構體型別的優先順序設定方法。
(1)基本資料型別的優先順序設定
此處的基本資料型別就是int型、double型、char型等可以直接使用的資料型別,優先佇列對它們的優先順序設定一般是數字大的優先順序越高,因此隊首元素就是優先佇列內元素最大的那個(如果char型,則是字典序最大的)。對基本資料型別來說,下面兩種優先佇列的定義是等價的(以int型為例,注意最後兩個》之間有乙個空格);
priority_queueq;
priority_queue,less>q;
less表示數字大的優先順序越大,而greater表示數字小的優先順序越大
因此,如果想讓優先佇列總是把最小的元素放在隊首,只需要進行如下定義:
priority_queue,greater>q;
下面是乙個示例:
#include#includeusing namespace std;
int main()
輸出結果:
1
(2) 結構體的優先順序設定
本節的最開頭舉了乙個水果的例子,可以對水果的名稱和**建立乙個結構體,如下所示:
struct fruit;
現在希望按水果的**高的優先順序高,就需要過載(overload)小於號"<"。過載是指對已有的運算子進行重新定義,也就是說,可以改變小於號的功能(例如把它過載為大於號的功能)。讀者對此處只需要知道它的寫法即可:
struct fruit
}f1,f2,f3;
int main()
{ priority_queueq;
f1.name="taozi";
f1.price=3;
f2.name="lizi";
f2.price=4;
f3.name="pingguo";
f3.price=1;
q.push(f1);
q.push(f2);
q.push(f3);
cout《這裡的小於過載號的作用與cmp函式的作用相類似,只不過定義相反。在排序中「return f1.price>f2.price",那麼則是按**高的在前面,但是在優先佇列中卻是**低的在前面。
優先佇列的優先順序設定法
優先佇列也是用 include這個標頭檔案,且不必引入vector的標頭檔案 預設定義 手工設定 後面補充的兩個引數 既然預設是大頂堆,所以手動設定時只用管小頂堆即可,greater include include include using namespace std intmain 只可在結構體...
html中元素的顯示優先順序
在html中,html中的元素一般劃分為幀元素 表單元素 非表單元素。幀元素 frameset 的優先順序最高,表單元素比非表單元素的優先順序要高。優先順序 幀元素 frameset 表單元素 非表單元素 表單元素包括 文字輸入框,密碼輸入框,單選框,核取方塊,文字輸入域,列表框等等 非表單元素包括...
優先順序佇列
分為最小優先順序佇列和最大優先順序佇列。優先順序佇列是一種用來維護一組元素構成的集合s的資料結構,這一組元素都有乙個關鍵字key,乙個最大優先順序佇列支援的操作 insert s,x 把x插入到集合s中 maxmum s 返回s中最大元素 extra max s 去掉s中最大關鍵字並返回該最大關鍵子...