例說資料結構&STL(四)——queue
1 白話佇列(queue)
大家一定聽過這樣一個關於佇列的笑話,“在飯堂排隊打飯,最大的欣慰不是前面的人越來越少,而是後面等的人越來越多”。從這句話我們就能探出佇列資料結構的精髓,它是一種先進先出(First In First Out ,簡稱FIFO)的線性表。只允許在表的尾端進行入隊,而在首端進行出隊。佇列就是這樣一個來源於生活的資料結構。
queue屬於介面卡容器型別,在STL中基於deque或者list物件而建立,它的應用很廣泛,例如二叉樹的層序遍歷,銀行業務系統,訊息佇列等等。
2 STL中queue實戰
2.1 標頭檔案包含
STL中queue模板類的呼叫需要包含下面的標頭檔案:
#include<queue>
我們在使用的時候還需要包含標準庫名稱空間,可以在標頭檔案下宣告using namespace std;
。queue包含的介面比較少,像因為它是單向新增,所以只有push()活著pop()操作,沒有push_back()導向性的介面。push()就是指在佇列尾部新增元素,而pop()就是指在佇列首部刪除元素,這是queue先進先出的性質所決定的。
2.2 變數宣告
queue與後面要介紹的stack模版非常類似,queue模版也需要定義兩個模版引數,一個是元素型別,一個是容器型別。元素型別是必要的,和前面介紹的一樣,可以是傳統資料型別諸如int,long,float等,或者是類,結構體諸如string等。容器型別是可選的,預設就是前面介紹的deque型別。
queue的宣告如下:
queue<int> que_fir;
queue<double> que_sed;
2.3 基本操作
que_fir.push(1); // 放入一個元素1在佇列尾部
que_fir.pop(); // 刪除隊首一個元素
que_fir.back(); // 訪問隊尾元素
que_fir.front(); // 訪問隊首元素
if(!que_fir.empty()); // 判斷佇列是否為空
que_fir.swap(que_sed); // 完全交換兩個佇列中資料,當然兩個佇列中儲存的必須是一種資料型別
que_fir.size(); // 佇列中元素個數
2.4 牛刀小試
之前寫過一個二叉樹層序遍歷的例項,它就是使用了佇列的原理依次按層遍歷輸出整個二叉樹儲存的資料。詳細實現請大家閱讀博文二叉樹的層序遍歷詳細講解(附完整C++程式)。
3 小結
佇列的操作很簡單,常用的方法函式只有這幾個。需要注意的是介面卡型別容器不支援迭代器操作,所以也就沒有類似指標(iterator)操作間接訪問。一般情況下是一邊pop(),然後一邊front()函式遍歷整個佇列。
以上是個人學習記錄,由於能力和時間有限,如果有錯誤望讀者糾正,謝謝!
轉載請註明出處:http://blog.csdn.net/FX677588/article/details/76284205
相關文章
- 例說資料結構&STL(七)——priority_queue資料結構
- 例說資料結構&STL(十三)——pair資料結構AI
- 例說資料結構&STL(一)——vector資料結構
- 例說資料結構&STL(二)——list資料結構
- 例說資料結構&STL(三)——deque資料結構
- 例說資料結構&STL(五)——stack資料結構
- 例說資料結構&STL(六)——heap資料結構
- 例說資料結構&STL(八)——set資料結構
- 例說資料結構&STL(九)——map資料結構
- 例說資料結構&STL(十二)——iterator資料結構
- 例說資料結構&STL(十)——hash_set/unordered_set資料結構
- 例說資料結構&STL(十一)——hash_map/unordered_map資料結構
- 資料結構之佇列(Queue)資料結構佇列
- js資料結構--佇列(queue)JS資料結構佇列
- STL中經常使用資料結構資料結構
- 【資料結構】棧(Stack)和佇列(Queue)資料結構佇列
- 資料結構之Queue | 讓我們一塊來學習資料結構資料結構
- 【C++ STL】queue和priority_queueC++
- 《STL原始碼剖析》-- stl_queue.h原始碼
- 資料結構&堆&heap&priority_queue&實現資料結構
- STL-queue&deque&stack
- STL(十九)queue佇列容器佇列
- JS資料結構(四)——連結串列JS資料結構
- 資料結構分析及其實現(Stack、Queue、Tree、LinkedList)資料結構
- 每週一練 之 資料結構與演算法(Queue)資料結構演算法
- 傳說中的資料結構_JAVA資料結構Java
- Stack and Queue in JavaScript(Javascript中的資料結構之棧和佇列)JavaScript資料結構佇列
- 《大話資料結構》讀後總結(四)資料結構
- 資料結構:線性表-例題資料結構
- 【PG結構】Postgresql資料庫資料目錄說明SQL資料庫
- [資料結構與演算法]佇列Queue 的多種實現資料結構演算法佇列
- redis資料結構詳解之Hash(四)Redis資料結構
- 從一條資料說起——InnoDB儲存資料結構資料結構
- 關於架構離不開資料結構之說架構資料結構
- 說說你對資料結構的理解?有哪些?區別?資料結構
- 演算法、資料結構、與設計模式等在遊戲開發中的運用 (四):佇列(Queue)演算法資料結構設計模式遊戲開發佇列
- [大資料文章之其四] 概率資料結構簡介大資料資料結構
- ECshop 每個資料庫表結構說明資料庫