c priority queue優先順序佇列

2021-09-02 02:45:18 字數 1368 閱讀 7447

當需要獲取到最大最小元素值,而又不想用最大最小堆的原生實現,stl提供了更簡單的庫,就是priority_queue,其時間複雜度也只有o(n

logn

)o(nlogn)

o(nlog

n)priority_queue的本質是乙個堆,其相對於queue的不同之處在於:優先佇列實現了內部自動排序,可根據自己的需要自定義排序規則,可以自己編寫函式或者仿函式用於內部優先順序的確定。

標頭檔案為#include

priority_queue

namespace std
type:資料型別

container:儲存資料的容器(必須是陣列實現的容器,比如vector,deque等,不能使用list,預設為vector。)

functional: 元素的比較方式。

元素的優先順序取決於設定的排序函式。如果沒有設定,預設的排序法是利用operator< 形成降序排列,也就是從大到小排列的大頂堆,堆首元素為最大的元素。

1.1 基本函式

top()

push()

pop()

2.1. 降序排列

#include #include using namespace std;

int main()

return 0;

}

2.4 以下代**返回pair的比較結果,先按照pair的first元素公升序,first元素相等時,再按照second元素公升序

#include#include#includeusing namespace std;

int main()

};bool operator<(node a, node b)

int main()

return 0;

}

2.6. 小頂堆:此時不能像基本型別這樣宣告priority_queue,原因是greater沒有定義,如果想用這種方法定義則可以過載operator >。

#include #include using namespace std;

struct node

};bool operator>( node a, node b )

int main()

return 0;

}

2.7. 重寫仿函式的例子

小頂堆:

#include #include using namespace std;

struct node

};struct cmp

};int main()

return 0;

}

參考:

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的模擬實現

priority queue 1 優先佇列是一種容器介面卡,根據嚴格的弱排序標準,它的第乙個元素總是它所包含的元素中最大的。2 此上下文類似於堆,在堆中可以隨時插入元素,並且只能檢索最大堆元素 優先佇列中位於頂部的元素 3 優先佇列被實現為容器介面卡,容器介面卡即將特定容器類封裝作為其底層容器類,q...