--- tags: STL title: Priority Queue --- :::success # 優先佇列 Priority Queue ## 實現 - std::priority_queue背後是heap ## 用途 - 為一序列容器 - 是一個帶優先級的queue - 可以==很快很方便的==加入元素或取出當前最優先的元素 ## 用法 ### 宣告 - 需要引入函式庫\<queue> ```cpp= #include <queue> //priority_queue<"dataType", "container", "comparisonFunction"> "name"; //container默認為vector,comparisonFunction默認為由大到小排序 priority_queue<int> test; priority_queue<int, vector<int>, greater<int> > pq; //由小到大 bool cmp(pair<int, int> a, pair<int, int> b) { return a.second > b.second; } //priority_queue優先判定為!cmp,所以這個cmp會使pq中小的優先 priority_queue<pair<int, int>, vector<pair<int, int> >, cmp> pq; ``` ### 函式 ```cpp= 狀態回傳 priority_queue.empty(); //回傳priority_queue是否為空 priority_queue.size(); //回傳priority_queue目前元素數 加入移除元素 priority_queue.push(e); //將e加入priority_queue priority_queue.pop(); //移除priority_queue中的第一個元素 操作元素 priority_queue.top(); //呼叫priority_queue中的第一個元素 ``` - 插入和移除的複雜度為 $O(logN)$,初始化的複雜度為$O(logN)$(建立heap,若建立後再一個一個push則為$O(NlogN)$) - 呼叫元素的複雜度為$O(1)$ :::
×
Sign in
Email
Password
Forgot password
or
Sign in via Google
Sign in via Facebook
Sign in via X(Twitter)
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
Continue with a different method
New to HackMD?
Sign up
By signing in, you agree to our
terms of service
.