STL優先佇列

2021-10-01 21:36:49 字數 1338 閱讀 9902

stl中的優先佇列也定義在標頭檔案中,用 priority_queuep 來宣告。這個 p 是乙個"越小的整數優先順序越低的優先佇列「。由於出隊元素並不是最先進佇列的元素,出隊的方法由queue 中的front()變為了top()。

自定義型別也可以組成優先佇列,但必須為每乙個元素定義乙個優先順序。這個優先順序並不用乙個確切的數字,只需要可以比較大小就行。例如,要實現乙個」個位數大的優先順序反而小「的優先佇列,可以定義乙個結構體cmp,過載」()「運算子,使其」看上去「像乙個」函式「,然後用」priority_queuep「 的方式定義。,下面是cmp的定義:

struct cmp

};

對於一些常見的優先佇列,stl提供了更為簡單的定義方法,例如越小的整數優先順序越大的優先順序佇列可以寫成」priority_queuep「,注意最後兩個」>「符號不要寫在一起,否則會被很多編譯器誤認為」>>「運算子。

description

編寫乙個程式,找出第 n 個醜數。

醜數就是只包含質因數 2, 3, 5 的正整數。

注:1是特殊的醜數。

示例:輸入: n = 10

輸出: 12

解釋: 1, 2, 3, 4, 5, 6, 8, 9, 10, 12 是前 10 個醜數。

input

輸入乙個數n (1 ≤ n ≤ 1500)。

output

輸出第n個醜數。

sample input

10sample output

12分析:從小到大生成各個醜數,最小的為1,對於任意抽數x,2x,3x,5x,也是醜數,可以用乙個優先順序佇列儲存所有已經生成的醜數,每次取出最小的醜數,生成新的3個醜數,對每個醜數標記是否之前生成過。

#include

using

namespace std;

typedef

long

long ll;

priority_queue

,greater

>p;

set s;

intmain()

; cin>>n;

p.push(1

);s.insert(1

);for(

int i =1;

; i++

)for

(int j =

0;j<

3;j++)}

}return0;

}

end.

STL 優先佇列

優先佇列 在優先佇列中,優先順序高的元素先出佇列。標準庫預設使用元素型別的 操作符來確定它們之間的優先順序關係。優先佇列的第一種用法,也是最常用的用法 priority queue qi 通過 操作符可知在整數中元素大的優先順序高。故示例1 中輸出結果為 9 6 5 3 2 第二種方法 在示例1 中...

優先佇列 stl

priority queue預設頂部是最大值 1 優先佇列的定義 包含標頭檔案 queue.h functional.h 可以使用具有預設優先順序的已有資料結構 也可以再定義優先佇列的時候傳入自定義的優先順序比較物件 或者使用自定義物件 資料結構 但是必須過載好 操作符。2 優先佇列的常用操作 優先...

STL 優先佇列

stl是個很玄學的東西,裡面有一種外掛程式般的操作 優先佇列。主體和佇列差不多,只不過每次push都會把當前的數放在合適的位置。而隊頭就是最大 小 的數。大概可以看成這樣的 queue tail a sort queue 1,queue 1 tail 隊頭最大的優先佇列 priority queue...