c++stack

  1. stack是一種容器適配器,專門用在具有後進先出操作的上下文環境中,其刪除只能從容器的一端進行元素的插入與提取操作。
  2. stack是作爲容器適配器被實現的,容器適配器即是對特定類封裝作爲其底層容器,並提供一組特定的成員函數來訪問其元素,將特定類作爲其底層的容器,並提供一組特定的成員函數來訪問其元素,講特定類作爲其底層的,元素特定容器的尾部(即棧頂)被壓入和彈出。
  3. stack的底層容器可以是任何標準的容器類模板或者一些其他特定的容器類,這些容器類應該支持以下操作
  • empty:判空操作
  • back:獲取尾部元素操作
  • push_back:尾部插入元素操作
  • pop_back:尾部刪除元素操作
  1. 標準容器vector,deque,list均符號這些需求,默認情況下,如果沒有爲stack指定特定的底層容器,默認情況下使用deque。
  2. 容器適配器
    適配器是一種設計模式(設計模式是一套被反覆使用的,多數人知曉的,經過分類編目的,代碼設計經驗的總結),該中模式是將一個類的接口轉換成客戶希望的另外一個接口。
    爲什麼將stack,queue和priority_queue稱作爲容器適配器?
    雖然stack,queue,priority_queue也可以存放元素,但在STL中並沒有將其劃分在容器的行列,而是將其稱爲容器適配器,這是因爲每個容器在底層都有自己的實現方式,而stack,queue,priority_queue只是在底層將其他容器進行了封裝。比如:
std::stack
template<class T,class Container=deque<T>> class stack;
std::queue
template<class T,class Container=deque<T>> class queue;
std::priority_queue
template<class T,class Container=vector<T>,class Compare=less<typename Container::value_type>> class priority_queue;
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章