STL适配器之stack

来源:互联网 发布:java服务器是什么 编辑:程序博客网 时间:2024/05/23 16:55

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:2cout<<a.top()<<endl;  //2cout<<"size:"<<a.size()<<endl;  //size:2a.pop();cout<<"size:"<<a.size()<<endl;  //size:1cout<<a.top()<<endl;  //1

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

stack<int, list<int>> a;a.push(1);a.push(2);cout<<"size:"<<a.size()<<endl;  //size:2cout<<a.top()<<endl;  //2cout<<"size:"<<a.size()<<endl;  //size:2a.pop();cout<<"size:"<<a.size()<<endl;  //size:1cout<<a.top()<<endl;  //1

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

4、空间释放

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

0 0
原创粉丝点击