天天看點

棧Stack和隊列Queue

棧和隊列是非常有用的資料結構,而且比較容易掌握和使用,他們的差別是什麼呢,有一句話說的好:吃多了拉是隊列,吃多了吐是棧;

首先先來看一下隊列QUEUE:

queue 隊列也是一個線性存儲表,元素資料的插入在表的一端進行,在另一端删除,進而構成了一個先進先出FIFO(First In First Out)表。插入一端稱為隊尾,删除一端稱為隊首。 預設使用雙端隊列deque來實作,queue也可看成一個容器擴充卡,将 deque 容器轉換為 queue 容器。當然,也可以利用其他合适的序列容器作為底層實作queue容器。

棧Stack和隊列Queue

C++ STL對queue隊列的泛化,是通過模闆類型,将預設的deque雙端隊列類型導入,在内部建立一個序列容器對象,來處理 queue隊列的資料存儲和操作,包括queue隊列是否為空、取隊首元素、取隊尾元素、元素入隊和元素出隊等。由于僅需要取隊首和隊尾元素的操作,是以queue隊列容器并不提供任何類型的疊代器。

使用:

聲明頭檔案“#include <queue>”

push():入隊,即插入元素,在隊尾插入;

pop():出隊,即删除元素,在隊首删除;

front():取隊首元素;

back():取隊尾元素;

empty():判斷隊列是否為空;

size():隊列元素的個數;

備注:如果要取隊首元素,然後将之從隊列中删除,應該使用:

queue.front();//這裡不是取隊尾
queue.pop();