queue爲隊列的意思,有了它,我們便不用用數組模擬隊列了
1:queueのqueue
聲明方式:queue<類型> 名字;
基本操作:
- q.empty():如果隊列爲空,則返回true,否則返回false
- q.size():返回隊列中元素的個數
- q.front():返回隊首元素的值,但不刪除該元素
- q.back():返回隊尾元素的值,但不刪除該元素
- q.push():對queue,在隊尾壓入一個新元素
2:queueのpriority_queue
聲明方式:priority_queue<類型名> 名字
基本操作
- 跟queue操作幾乎一樣,但是沒有front和back,而且push跟queue的用法不同
- q.top():返回具有最高優先級的元素的值
- q.push():對於priority_queue,在基於優先級的適當位置插入新元素
對於priority_queue的聲明方式,有兩種,默認和自定義,而且默認又分爲大根堆和小根堆,代碼下面仔細看註釋:
priority_queue<int,vector<int>,greater<int> >zhou1; //從小到大
priority_queue<int,vector<int>,less<int> >zhou2; //從大到小
priority_queue<Node> zhou3; //結構體排序規則自定義
struct Node//針對於自定義排序規則的結構體寫法
{
int score,id;
friend bool operator < (const Node &a,const Node &b)
{
return a.score>b.score; //從小到大
//return a.score<b.score; //從大到小
}
};
兩個注意點,第一個是聲明默認排序規則的優先隊列時’>’要用空格隔起來。第二個是自定義時如果要從小到大要寫成’>’號,跟sort的cmp函數是反過來的