C++STL——隊列

來源:互聯網
上載者:User

標籤:儲存   實現   main   包括   類型   使用   資料   尺寸   include   

一、相關定義

原理:queue 隊列也是一個線性儲存表,元素資料的插入在表的一端進行,在另一端刪除,從而構成了一個先進先出FIFO(First In First Out)表。

隊頭&隊尾:插入一端稱為隊尾,刪除一端稱為隊首。

C++隊列是一種容器適配器,預設使用雙端隊列deque來實現,將 deque 容器轉換為 queue 容器。當然,也可以利用其他合適的序列容器作為底層實現queue容器。

隊列可以用線性表(list)或雙向隊列(deque)來實現(注意vector container不能用來實現queue,因為vector 沒有成員函數pop_front!):
queue<list<int> > q1;
queue<deque<int> > q2;
其成員函數有“判空(empty)” 、“尺寸(Size)” 、“首元(front)” 、“尾元(backt)” 、“排入佇列(push)” 、“彈出隊列(pop)”等操作。

C++ STL對queue隊列的泛化,是通過模板類型,將預設的deque雙端隊列類型匯入,在內部建立一個序列容器物件,來處理 queue隊列的資料存放區和操作,包括queue隊列是否為空白、取隊首元素、取隊尾元素、元素入隊和元素出隊等。由於僅需要取隊首和隊尾元素的操作,因此queue隊列容器並不提供任何類型的迭代器。

二、queue模板類

  • queue模板類的定義在<queue>標頭檔中。
  • queue 模板類也需要兩個模板參數,一個是元素類型,一個容器類型,元素類型是必要的,容器類型是可選的,預設為deque 類型。

定義queue 對象的範例程式碼如下:
queue<int> q1;
queue<double> q2;

queue 的基本操作有:
入隊,如例:q.push(x); 將x 接到隊列的末端。
出隊,如例:q.pop(); 彈出隊列的第一個元素,注意,並不會返回被彈出元素的值。
訪問隊首元素,如例:q.front(),即最早被壓入隊列的元素。
訪問隊尾元素,如例:q.back(),即最後被壓入隊列的元素。
判斷隊列空,如例:q.empty(),當隊列空時,返回true。
訪問隊列中的元素個數,如例:q.size()

三、代碼實現

#include <queue> int main(){queue<int> q;    q.push(4);    q.push(5);    printf("%d\n",q.front());    q.pop();}

 

#include <iostream>#include <queue>#include <assert.h>/*調用的時候要有標頭檔: #include<stdlib.h> 或 #include<cstdlib> +#include<queue>       #include<queue>詳細用法:定義一個queue的變數     queue<Type> M查看是否為空白範例        M.empty()    是的話返回1,不是返回0;從已有元素後面增加元素   M.push()輸出現有元素的個數      M.size()顯示第一個元素          M.front()顯示最後一個元素        M.back()清除第一個元素          M.pop()*/using namespace std;int _tmain(int argc, _TCHAR* argv[]){queue <int> myQ;cout<< "現在 queue 是否 empty? "<< myQ.empty() << endl; for(int i =0; i<10 ; i++){myQ.push(i);}for(int i=0; i<myQ.size(); i++){printf("myQ.size():%d\n",myQ.size());cout << myQ.front()<<endl;myQ.pop();}system("PAUSE"); return 0;}輸出結果:現在 queue 是否 empty? 1myQ.size():100myQ.size():91myQ.size():82myQ.size():73myQ.size():64請按任意鍵繼續. . .

 

C++STL——隊列

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.