STL容器之queue


一,基本的成員函數

back()返回最後一個元素

empty()如果隊列空則返回真

front()返回第一個元素

pop()刪除第一個元素

push()在末尾加入一個元素

size()返回隊列中元素的個數

二,queue 的基本操作舉例如下:

1,queue入隊,如例:q.push(x); 將x 接到隊列的末端。

queue出隊,如例:q.pop(); 彈出隊列的第一個元素,注意,並不會返回被彈出元素的值。

訪問queue隊首元素,如例:q.front(),即最早被壓入隊列的元素。

訪問queue隊尾元素,如例:q.back(),即最後被壓入隊列的元素。

判斷queue隊列空,如例:q.empty(),當隊列空時,返回true。

訪問隊列中的元素個數,如例:q.size()

2,隊列使用數組:

#include<iostream>
      #include<queue>
     using namespace std;
    int main()
   {
       queue<int>q;
       int a[6];
       for(int i=0;i<5;i++)
            cin>>a[i];
       for(int i=0;i<5;i++)
           q.push(a[i]);
       for(int i=0;i<5;i++)
    {
        cout<<q.front()<<endl;
        q.pop();
    }
    return 0;
}

   


三,#include<queue>

queue<int>q;

結構體:struct node

          {

               int x,y;

          };

           queue<node>q;


四,優先隊列

優先隊列容器與隊列一樣,只能從隊尾插入元素,從隊首刪除元素。但是優先隊列中最大的元素總是位於隊首,所以出隊時,並非按照先進先出的原則,而是將當前隊列中最大的元素出隊。元素的比較規則則默認元素值由小到大排序,可以重新載“>”來重新定義比較規則。

基本操作:

empty() 如果隊列爲空返回真

pop() 刪除隊頂元素

push() 加入一個元素

size() 返回優先隊列中擁有的元素個數

top() 返回優先隊列隊頂元素(隊列中的front()變成了top())

在默認的優先隊列中,優先級高的先出隊。在默認的int型中先出隊的爲較大的數。


((1)第一種用法,這是最常用的默認用法,即優先級高的先出隊列,例如一個int優先隊列,那麼出隊的時候就是int大的先出隊列
舉例:

#include<iostream>

#include<queue>

using namespace std;

priority_queue<int>q;

for(int i=i;i<=5;i++)

{

  q.push(i);

}

for(int i=0;i<5;i++)

{

 cout<<q.top()<<endl;

q.pop();

return 0;

}//結果輸出5 4 3 2 1;

(2)那麼如果想要優先隊列中低優先級的元素先出隊列,怎麼辦呢? --- 自定義優先級

自己實現比較函

  1. struct cmp1  
  2. {  
  3.     bool operator ()(int x,int y)  
  4.     {  
  5.         return x>y; //小值優先  
  6.     }  
  7. };

    1. struct cmp2  
    2. {  
    3.     bool operator ()(int x,int y)  
    4.     {  
    5.         return x<y; //大值優先  
    6.     }  
    7. }

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