【C++ STL】Stack


1、定義

  class stack<> 實作出一個stack(也成為LIFO,后進先出),你可以使用push()將任意數量的元素置入stack中,也可以使用pop()將元素依次插入次序反序從容器移除(即后進先出)。

  在<stack>中,class stack定義如下:

namespace std {
       template <class T,
                 class Container = deque<T> >
       class stack;
   }

  第一個template參數代表元素型別。帶有默認值的第二個template參賽用來定義stack內部存放元素的實際容器,缺省采用的是deque。之所以采用deque是因為deque移除元素會釋放內存,並且不用重新分配內存時復制所有元素。

  例如定義一個元素型別為整數的stack:

std::stack<int> st;     // integer stack

  實際上,stack只是將各項操作轉化為內部容器的各項調用,可以使用任何序列式容器來支持stack,只要它支持back(),push_back(),pop_back()等操作。

  例如使用vector來容納元素:

std::stack<int,std::vector<int> > st;     // integer stack that uses a vector

2、核心接口

stack就三個接口函數,push(),top(),pop()。

  • push()會將一個元素放入stack中。
  • top()會返回stack中的棧頂元素,返回的是reference,可以就地修改值。
  • pop()移除棧頂元素,無返回值。
  • size()返回stack長度。
  • empty()返回stack是否為空。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM