STL學習筆記 queue

2022-02-08 06:01:24 字數 2376 閱讀 8850

queue 佇列容器

queue 佇列也是乙個線性儲存表,與後進先出的堆疊不同,元素資料的插入在表的一端進行,在另一端刪除,從而構成了乙個先進先出(first in first out) 表。插入一端稱為隊尾,刪除一端稱為隊首。

由於c++ stl 的佇列泛化,預設使用雙端佇列 deque 來實現,因此,queue 也可看成乙個容器的介面卡,將 deque 容器轉換為 queue 容器。當然,也可以利用其它合適的序列容器作為底層實現 queue 容器。

queue佇列容器的c++標準標頭檔案為 queue ,需要用巨集語句 "#include " 包含進來才可應用 queue 容器進行開發。

建立 queue 物件

使用 queue 佇列之前,要先利用建構函式建立乙個佇列物件,才可進行元素的入隊、出對、取隊首和隊尾等操作。

1.    queue()

預設的建構函式,建立乙個空的 queue 物件。例如,下面一行**使用預設的雙端隊列為底層容器建立了乙個空的 queue 佇列物件 q ,資料元素為 int 型別。

queueq;

2.    queue(const queue&)

複製建構函式,用乙個 queue 物件建立新的 queue 物件。例如,下面一行**利用 queue 物件 q1 ,建立乙個以雙向鍊錶為底層容器的 queue 物件 q2.

// queue>    q1;

queue>    q2(q1);

元素入隊

queue 佇列容器的元素入隊函式也是 push 函式。由於 c++ stl 的 queue 佇列不預設固定的佇列大小,因此 push 函式也就不能判斷佇列控制項是否已滿,都會試圖將元素放入佇列,因此 push 函式不會返回元素入隊是否成功的資訊。

void  push(const value_type& x)

元素出對

queue 佇列容器的元素出對函式為 pop 函式。函式不判斷佇列是否為空,都試圖將隊首元素刪除掉。一般先判斷佇列不為空,才使用該函式進行元素出對操作。

void  pop()

取隊首、尾元素

queue 佇列容器的 front 函式和 back 函式,可分別讀取隊首和隊尾元素。

1.    value_type&  front()    // 讀取佇列的隊首元素

2.    value_type&  back()    // 讀取佇列的隊尾元素

佇列非空的判斷

從上面看到,很多 queue 佇列的操作都要用到 empty 函式,判斷不斷入隊和出對的佇列是否為空,再做下一步的處理。

bool  empty()

1 -----------------------------------------獲取 queue 佇列的所有元素

2 #include 3 #include 4

using

namespace

std;

5int

main()623

24 cout <2526

return0;

27 }

1

/*佇列的大小

2佇列的元素個數可用 size 函式獲取。如果每次元素入隊前,都先檢查當前佇列的元素個數,以此判斷是否再允許元素入隊,那麼就可實現乙個具有固定長隊的佇列。如下是 size 函式的使用原型:

3size_type size()45

下面的示例程式,將 queue 佇列的長隊設定為 50 個 int 元素,並使用 list 雙向鍊錶作底層結構,每當元素入隊時,都呼叫 size 函式檢查長度是否會超過限定的長度界限,實現乙個固定大小的 queue 佇列。6*/

78 -----------------------------------------固定長度的 queue 佇列

9 #include 10 #include 11 #include 12

#define queue_size 50

1314

using

namespace

std;

15int

main()

1635

36 cout <3738

return0;

39 }

-------------------------- queue 小結

佇列也是一種常用的資料結構,通常以訊息佇列的形式應用與程序間的通訊。c++ stl 提供的 queue 容器佇列的資料結構和受限操作進行了泛化封裝,包括佇列初始化、元素入隊、取隊首元素、元素出對、佇列是否為空以及獲取當前佇列長度等操作。

與堆疊一樣,queue 佇列也是預設使用 queue 雙端佇列作底層架構,元素的出對也不返回隊首元素,需要先用取隊首函式將之讀出。通過檢查當前佇列長度,來決定是否允許元素入隊,可實現具有固定長度的佇列。

STL學習筆記之佇列queue

只能訪問queue容器介面卡的第乙個和最後乙個元素。只能在容器的末尾新增新元素,只能從頭部移除元素。fifo 先進先出 1.初始化 需要標頭檔案 queueque 2.成員函式 c 佇列queue類成員函式如下 back 返回最後乙個元素 empty 如果佇列空則返回真 front 返回第乙個元素 ...

C 學習筆記之 STL 庫 queue

queue 佇列是一種容器介面卡,專門用來滿足先進先出的操作,也就是元素在容器的一端插入並從另一端提取。優先順序佇列是一種容器介面卡,根據一些嚴格的弱排序標準,專門設計使其第乙個元素始終是它包含的最值元素。其本質上就是乙個大頂堆或者小頂堆,會在需要時自動呼叫函式 make heap,push hea...

STL學習筆記12 特殊容器queue

在標頭檔案中定義 namespace std queue就是資料結構裡佇列的實現,先進先出。定義中的第二個引數用來定義queue內部存放元素的實際容器,可以是任何序列式容器,預設容器為deque。實際上queue也只是很單純地把各項操作轉化為內部容器的對應呼叫。將乙個元素置入queue內 front...