1、優先佇列是一種特殊的佇列,這種佇列會自動的把佇列裡的數排序(預設從大到小,使用「<」判斷),而且還可以把數按照特定的方法排列!(包括結構體和過載"<")
2、優先佇列的標頭檔案,需要包括:
#includeusing namespace std;
宣告:乙個優先佇列宣告的基本格式是:
priority_queue《結構型別》 佇列名;
比如:priority_queue i;
priority_queue d;
不過,我們最為常用的是這幾種:
priority_queue q;
//node是乙個結構體
//結構體裡過載了『<』小於符號
priority_queue ,greater> q; // 從小到大排序(陣列)
priority_queue ,less>q; // 從大到小排序
//不需要#include標頭檔案
//注意後面兩個「>」不要寫在一起,「>>」是右移運算子
1、以乙個名為q的優先隊列為例:
q.size(); //返回q裡元素個數
q.empty(); //返回q是否為空,空則返回1,否則返回0
q.push(k); //在q的末尾插入k
q.pop(); //刪掉q的第乙個元素
q.top(); //返回q的第乙個元素
q.back(); //返回q的末尾元素
2、優先佇列的特性
自動排序。
怎麼個排法呢? 在這裡介紹一下:
(1)、預設的優先佇列(非結構體結構)
priority_queue q;
簡單操作:
#include#includeusing namespace std;
priority_queue q;
int main()
程式大意就是在這個優先佇列裡依次插入10、8、12、14、6,再輸出。
結果是什麼呢?
14 12 10 8 6
也就是說,它是按從大到小排序的!
(2)、預設的優先佇列(結構體,過載小於)
先看看這個結構體是什麼。
struct node
}
(3)、less和greater優先佇列(多使用這乙個)
還是以int為例,先來宣告:
priority_queue ,less> p; // 陣列從大到小排序
priority_queue ,greater> q; // 從小到大排序
code:
#include#includeusing namespace std;
priority_queue ,less> p;
priority_queue ,greater> q;
int a[5]=;
int main()
結果:
less:14 12 10 8 6
greater:6 8 10 12 14
所以,我們可以知道,less是從大到小,greater是從小到大。
STL容器 優先佇列priority queue
priority queue顧名思義,是乙個具有權值概念的queue,它和queue一樣允許加入新元素 移除舊元素等功能。由於這是乙個queue,所以只允許在底部加入元素,從頂部取出元素。但優先佇列帶有權值概念,其內的元素自動按照元素的權值排序。權值最高者排在最前面。stl的priority que...
STL初步 優先佇列Priority queue
這個優先到底是如何優先?和普通佇列區別在哪?priority queue type,container,functional priority queue,less q priority queue,less a q priority queue,less b 優先佇列中沒有迭代器 也沒有clear...
優先順序佇列用法詳解(priority queue)
由於優先順序佇列的內部資料結構為堆,所以這裡先介紹堆的一些操作。堆的一些函式操作在algorithm標頭檔案中 在 first,last 範圍內 構造最大堆,first,last 可以是vector指標也可以是陣列指標 make heap first last make heap first las...