STL适配器之stack

1、基本概念

  stack是一种先进后出的数据结构,要求数据只能从顶端插入、删除和访问。stack是在底层容器的基础上实现的,内部都是调用容器的接口,但对外却提供约束性的新接口,因而严格来说stack并不算是一个容器,而是一种容器适配器。

2、迭代器

  stack只允许在顶端进行数据的操作,因而并不提供遍历的功能,也不提供迭代器。

3、底层容器

  stack的底层容器使用的是模板参数,内部会使用empty、size、back、push_back、pop_back这些容器的接口,只要是提供这些接口的容器都可作为stack的底层容器。
  stack默认使用deque作为底层容器,下面是测试代码:

stack<int> a;
a.push(1);
a.push(2);

cout<<"size:"<<a.size()<<endl;  //size:2
cout<<a.top()<<endl;  //2
cout<<"size:"<<a.size()<<endl;  //size:2

a.pop();
cout<<"size:"<<a.size()<<endl;  //size:1
cout<<a.top()<<endl;  //1

  这里可以看到stack的使用相当简洁明了,下面我们使用list作为底层容器测试一下:

stack<int, list<int>> a;
a.push(1);
a.push(2);

cout<<"size:"<<a.size()<<endl;  //size:2
cout<<a.top()<<endl;  //2
cout<<"size:"<<a.size()<<endl;  //size:2

a.pop();
cout<<"size:"<<a.size()<<endl;  //size:1
cout<<a.top()<<endl;  //1

  可以看到,使用不同的底层容器测试结果没有任何差别。

4、空间释放

  stack并没有提供clear的接口,想要释放空间,只能通过pop接口自行释放。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值