我碰到這樣的:Stack如何在STL中實現?
這引發了我的問題,如何在STL實現棧?
我尋找類似的描述:
How is C++ std::vector implemented?
What really is a deque in STL?
我碰到這樣的:Stack如何在STL中實現?
這引發了我的問題,如何在STL實現棧?
我尋找類似的描述:
How is C++ std::vector implemented?
What really is a deque in STL?
stack
是一個適配器,它使用另一個容器作爲底層存儲,並將函數push
,pop
,emplace
等鏈接到底層容器中的相關函數。
缺省情況下,使用std::stack
作爲std::deque
基礎容器。但是你可以指定你自己的,例如std::stack<T, std::vector<T>> s;
。
有關更多細節,請參見cppreference。
std::stack
具有模板參數Container
,這是需要是能夠存儲T
類型的元素的容器(即就是說,堆棧元素的類型)。這種容器需要具有back()
,push_back()
pop_back()
和功能,以及在標準容器vector
,deque
list
和所有滿足要求。
所以,取容器鍵入用戶指定,將所得的std::stack
實例是其中一類:
Container<T>
型(或其它的數據成員,如果不是字面上的數據成員非常相似我想它可能可能是一個私人基類)。push_back()
每當你在棧上調用push()
在容器上。pop_back()
每當你在棧上調用pop()
在容器上。寬泛地說,std::stack<T>
是一個封裝起來的std::deque<T>
一個實例的對象,並隱藏大多數的deque
的功能,以呈現更簡單的界面僅用作後進先出(LIFO)隊列。同樣std::queue
提供了一個FIFO隊列。
什麼在鏈接中的'stack'適配器的描述你提供的是造成混亂?關於該適配器的另一個文檔[可以在這裏找到**](http://en.cppreference.com/w/cpp/container/stack),並且我高度贊同您將該網站加入書籤。它作爲C++參考非常出色,是最好的imho之一。 – WhozCraig