淺談C++ STL queue 容器


淺談C++ STL queue 容器

本篇隨筆簡單介紹一下\(C++STL\)\(queue\)容器的使用方法和常見的使用技巧。\(queue\)容器是\(C++STL\)的一種比較基本的容器。我們在學習這個容器的時候,不僅要學到這個容器具體的使用方法,更要從中體會\(C++STL\)的概念。

queue容器的概念

\(queue\)在英文中是隊列的意思。隊列是一種基本的數據結構。而\(C++STL\)中的隊列就是把這種數據結構模板化了。我們可以在腦中想象買票時人們站的排隊隊列。我們發現,在一個隊列中,只可以從隊首離開,從隊尾進來(沒有插隊,想啥呢)。即一個先進先出的數據結構。

上圖理解:

queue容器的聲明

\(queue\)容器存放在模板庫:#include<queue>里,使用前需要先開這個庫。

\(queue\)容器的聲明遵循\(C++STL\)的一般聲明原則:

容器類型<變量類型> 名稱

例:


#include<queue>

queue<int> q;

queue<char> q;

queue<pair<int,int> > q;

queue<node> q;

struct node{...};

queue容器的使用方法

\(queue\)容器的使用方法大致如下表所示:

用法 作用
q.front(),q.back() 返回queue的首、尾元素
q.push() 從queue末尾加入一個元素
q.size() 返回queue當前的長度(大小)
q.pop() 從queue末尾刪除一個元素
q.empty() 返回queue是否為空,1為空、0不為空

注意,雖然\(vector\)\(queue\)是兩種最基本的\(STL\)容器,但請記住它們兩個不是完全一樣的。就從使用方法來講:

\(queue\)不支持隨機訪問,即不能像數組一樣地任意取值。並且,\(queue\)並不支持全部的\(vector\)的內置函數。比如\(queue\)不可以用\(clear()\)函數清空,清空\(queue\)必須一個一個彈出。同樣,\(queue\)也並不支持遍歷,無論是數組型遍歷還是迭代器型遍歷統統不支持,所以沒有\(begin(),end();\)函數,使用的時候一定要清楚異同!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM