C priority queue的模擬實現

2021-10-07 06:59:43 字數 2169 閱讀 1468

priority_queue:

1 .優先佇列是一種容器介面卡,根據嚴格的弱排序標準,它的第乙個元素總是它所包含的元素中最大的

2 .此上下文類似於堆,在堆中可以隨時插入元素,並且只能檢索最大堆元素(優先佇列中位於頂部的元素) 。

3 .優先佇列被實現為容器介面卡,容器介面卡即將特定容器類封裝作為其底層容器類,queue提供一組特定的成員函式來訪問其元素。元素從特定容器的「尾部」彈出,其稱為優先佇列的頂部 。

4 .底層容器可以是任何標準容器類模板,也可以是其他特定設計的容器類。容器應該可以通過隨機訪問迭代器訪問,並支援以下操作:

empty():檢測容器是否為空

size():返回容器中有效元素個數

front():返回容器中第乙個元素的引用

push_back():在容器尾部插入元素

pop_back(): 在容器尾部刪除元素

5 .標準容器類vector和deque滿足這些需求。預設情況下,如果沒有為特定的priority_queue類例項化指定容器類,則使用vector 。

6 .需要支援隨機訪問迭代器,以便始終在內部保持堆結構。容器介面卡通過在需要時自動呼叫演算法函式make_heap、push_heap和pop_heap來自動完成此操作 。

#include

#include

#include

#include

using

namespace std;

//模擬對於自定義date型別,priority_queue介面的模擬實現及使用

template

<

classt,

class

con= vector

,class

compare

= less>

class

priority_queue

void

pop(

) t&

top(

) size_t size()

const

bool

empty()

const

private

://向下調整,建大堆

void

shiftdown

(int parent)

else}}

//向上調整,建大堆

void

shiftup

(int child)

else}}

private

: con _c;

compare _com;};

//大於的仿函式

template

<

class

t>

struct greater};

//小於的仿函式

template

<

class

t>

struct less};

//自定義型別

class

date

//自定義型別判斷大小得過載 > 和 < 運算子

bool

operator

>

(const date& d)

const

else

if(_y == d._y)

else

if(_m == d._m)}}

return

false;}

bool

operator

<

(const date& d)

const

else

if(_y == d._y)

else

if(_m == d._m)}}

return

false;}

public

:int _y;

int _m;

int _d;};

//《對於自定義型別的過載

ostream&

operator

<<

(ostream& cout,

const date& d)

void

test1()

cout << endl;

}int

main()

c priority queue 優先佇列

priority queue syntax in their implementation in the c standard template library,priority queues take three template parameters 1 2 template class t,c...

C Priority Queue 優先佇列

c 優先佇列類似佇列,但是在這個資料結構中的元素按照一定的斷言排列有序。它的標頭檔案為。由於介面卡不支援迭代,乙個 priority queue 將有沒有關聯的迭代器。函式列表 empty 如果優先隊列為空,則返回真 pop 刪除第乙個元素 push 加入乙個元素 size 返回優先佇列中擁有的元素...

c priority queue優先順序佇列

當需要獲取到最大最小元素值,而又不想用最大最小堆的原生實現,stl提供了更簡單的庫,就是priority queue,其時間複雜度也只有o n logn o nlogn o nlog n priority queue的本質是乙個堆,其相對於queue的不同之處在於 優先佇列實現了內部自動排序,可根據...