【STL】顺序容器 — stack

24 篇文章 3 订阅
23 篇文章 0 订阅
具有修改某物接口,形成另一种风貌之性质者,称为适配器。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.
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值