queue

queue爲隊列的意思,有了它,我們便不用用數組模擬隊列了


1:queueのqueue

聲明方式:queue<類型> 名字;
基本操作:

  1. q.empty():如果隊列爲空,則返回true,否則返回false
  2. q.size():返回隊列中元素的個數
  3. q.front():返回隊首元素的值,但不刪除該元素
  4. q.back():返回隊尾元素的值,但不刪除該元素
  5. q.push():對queue,在隊尾壓入一個新元素

2:queueのpriority_queue

聲明方式:priority_queue<類型名> 名字
基本操作

  1. 跟queue操作幾乎一樣,但是沒有front和back,而且push跟queue的用法不同
  2. q.top():返回具有最高優先級的元素的值
  3. 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函數是反過來的


對於queue:題目廣搜的都可以練

對於priority_queue:合併果子

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章