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是否為空。