棧和隊列是非常有用的資料結構,而且比較容易掌握和使用,他們的差別是什麼呢,有一句話說的好:吃多了拉是隊列,吃多了吐是棧;
首先先來看一下隊列QUEUE:
queue 隊列也是一個線性存儲表,元素資料的插入在表的一端進行,在另一端删除,進而構成了一個先進先出FIFO(First In First Out)表。插入一端稱為隊尾,删除一端稱為隊首。 預設使用雙端隊列deque來實作,queue也可看成一個容器擴充卡,将 deque 容器轉換為 queue 容器。當然,也可以利用其他合适的序列容器作為底層實作queue容器。
C++ STL對queue隊列的泛化,是通過模闆類型,将預設的deque雙端隊列類型導入,在内部建立一個序列容器對象,來處理 queue隊列的資料存儲和操作,包括queue隊列是否為空、取隊首元素、取隊尾元素、元素入隊和元素出隊等。由于僅需要取隊首和隊尾元素的操作,是以queue隊列容器并不提供任何類型的疊代器。
使用:
聲明頭檔案“#include <queue>”
push():入隊,即插入元素,在隊尾插入;
pop():出隊,即删除元素,在隊首删除;
front():取隊首元素;
back():取隊尾元素;
empty():判斷隊列是否為空;
size():隊列元素的個數;
備注:如果要取隊首元素,然後将之從隊列中删除,應該使用:
queue.front();//這裡不是取隊尾
queue.pop();