1. 程式人生 > 其它 >c++優先佇列(priority_queue)

c++優先佇列(priority_queue)

首先要包含標頭檔案 #include<queue>

優先佇列具有佇列的所有特性,包括佇列的基本操作,只是在這基礎上添加了內部的一個排序,它本質是一個堆實現的。

和佇列基本操作相同

top() 訪問隊頭元素

empty() 判斷佇列是否為空,為空則返回1,否則返回0

size() 返回佇列內的元素個數

push() 再佇列中插入一個元素

pop() 彈出隊頭元素

swap() 交換內容

emplace() 構造一個元素插入佇列

定義:priority_queue<Type, Container, Functional>

Type 就是資料型別,Container 就是容器型別(Container必須是用陣列實現的容器,比如vector,deque等等,但不能用 list。STL裡面預設用的是vector),Functional 就是比較的方式。

預設是大頂堆,降序序列

#include<iostream>
#include<algorithm>
#include<queue>

using namespace std;

int main()
{
    //小頂堆,升序排列
    priority_queue<int,vector<int>,greater<int>> qa;
    //大頂堆,降序排列
    priority_queue<int,vector<int>,less<int> >qb;
    
    for
(int i=0;i<9;++i) {qa.push(i);qb.push(i);} //輸出小頂堆的元素 while(qa.size()){ cout<<qa.top()<<" "; qa.pop();} //0 1 2 3 4 5 6 7 8 cout<<endl; //輸出大頂堆的元素 while(qb.size()){ cout<<qb.top()<<" "; qb.pop();} //8 7 6 5 4 3 2 1 0 return(0); }

暫時寫到這裡