您的位置:首页 > 其它

【STL】顺序容器 — stack

2014-05-14 15:53 176 查看
具有修改某物接口,形成另一种风貌之性质者,称为适配器。stack便是以deque为底层容器,适当封闭一些功能而形成一种具有“先进后出”特性,并不允许遍历行为的容器适配器。因为不能遍历容器,故stack没有迭代器。

源码如下:
template <class T, class Sequence = deque<T> >
class stack {
....
protected:
Sequence c; // 底层容器
public:
bool empty() const { return c.empty(); }
size_type size() const { return c.size(); }
reference top() { return c.back(); }
const_reference top() const { return c.back(); }
void push(const value_type& x) { c.push_back(x); }  // deque末端进
void pop() { c.pop_back(); }  // deque末端出
};


从代码可以看出,stack的所有操作都是转调用了底层容器deque的相应操作,所以stack的定义非常简单,这里就不做多的分析了。

stack默认使用deque作为底层容器,但定义stack时可以自己定义底层容器,如:
stack<int, list<int> > istack;
由于list也具有empty、size、back、push_back、pop_back等功能,所以用list作为底层容器是合法的。

参考:
《STL源码剖析》 P167.
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: