優先佇列中元素優先順序的設定

2021-10-23 07:00:05 字數 1224 閱讀 1318

如何定義優先佇列內元素的優先順序是運用好優先順序的關鍵,下面分別介紹基本資料型別(例如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中最大關鍵字並返回該最大關鍵子...