C 中的優先佇列 Priority queue

2021-10-08 20:00:09 字數 1867 閱讀 1985

priority_queue與queueq用法類似,同樣支援以下操作:

1.push()。將元素進隊

2.top()。獲取隊頭元素

3.pop()。刪除隊頭元素

4.empty()。佇列是否為空

5.size()。佇列的長度

對於priority_queue原函式的如下所示

priority_queue
type為資料型別,比如int、double、string等等。

container表示容器型別,例如vector、deque等等。

functional表示功能,比如公升序(greater),俗稱大頂堆;還是降序(less),俗稱小頂堆。

//大頂堆,公升序

priority_queue <

int,vector<

int>

,greater<

int>

> qg;

//小頂堆,降序

priority_queue <

int,vector<

int>

,less<

int>

> ql;

用實際題目舉個例子

輸入n個整數,找出其中最小的k個數。例如輸入4,5,1,6,2,7,3,8這8個數字,則最小的4個數字是1,2,3,4。

#include

#include

#include

#include

using

namespace std;

class

solution

else}}

while

(!pq.

empty()

)return ret;}}

;int

main()

;int k =5;

vector<

int> output;

solution s;

output = s.

getleastnumbers_solution

(input, k)

;for

(int i =

0; i < output.

size()

; i++

)return0;

}

#pragma once

#include

#include

#include

#include

using

namespace std;

class

solution7

else}}

while

(!pq.

empty()

)return ret;}}

;int

main()

;int k =5;

vector<

int> output;

solution7 s7;

output = s7.

getleastnumbers_solution

(input, k)

; cout <<

"greater功能,前"

<< k <<

"個最小值為:"

C 中優先佇列的使用

c 中的常用的stl包括vector set map queue等,queue型別即我們平常所說的先入先出的佇列,取出queue的頭元素使用front 方法。c 的queue標頭檔案中同樣包括優先佇列,priority queue,優先佇列中最先出列的不是最先入列的元素,而是優先順序最高的元素,在p...

C 優先佇列

半題外話 優先佇列個人認為主要優點是可以在排序後進行類似於插入排序的操作,適合於需要在陣列排序後再次進行操作的題目 再由此產生一堆bug 本蒟蒻是在敲貪心的題時遇見的 弱得連個貪心都不會敲了呵 就開始了學 mo 習 ca 之旅 優先佇列的結構 佇列1.back 返回乙個引用,指向最後乙個元素 2.e...

c 優先佇列

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