[英]How is Stack implemented in STL?
我遇到了這個:
這引發了我一個問題,即如何在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()
時,都會在容器上調用push_back()
。 pop()
時,都會在容器上調用pop_back()
。 松散地說, std::stack<T>
是一個包裝std::deque<T>
實例的對象,並隱藏了大多數deque
的功能,以便呈現一個更簡單的接口, 僅用作后處理-先進先出(LIFO)隊列。 同樣, std::queue
表示一個FIFO隊列。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.