首页 / C++ / C++STL特殊容器stack
C++STL特殊容器stack
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了C++STL特殊容器stack,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含1802字,纯文字阅读大概需要3分钟。
内容图文
![C++STL特殊容器stack](/upload/InfoBanner/zyjiaocheng/843/6a2d46f2bef14d57b8af8b1c678a926f.jpg)
stack的基本性能
stack准确的说并不是STL framework所提供的容器,而是一个为了满足特殊需求而设计的容器。属于容器适配器(container adapter),它提供了简单而清晰的接口满足我们对数据结构堆栈的需求。
对于stack(也称LIFO,后进先出),我们可以使用 push()将任意数量的元素放入stack内,也可以使用 pop()将元素以其插入的反序从容器中移除。
上图可以很形象的看出,我们的压入顺序是A->B,待到我们弹出时的顺序就变成了B->A。
stack使用须知
1.包含头文件
1 #include<stack>
2.在头文件<stack>中,class stack 定义如下
1 namespace std 2 { 3 template <typename T, 4 typename Container = deque<T>> 5 class stack; 6 }
第一个template参数代表元素类型,带有默认值的第二个template参数用来定义stack内部存放元素的实际容器,默认为deque。
很多人问为什么不用vector,具体原因可能是dequ有移除元素时会自动释放内存,并且不必在重新分配reallocation时复制全部元素的优点。
3.我们可以自定义stack的内部容器
stack的实现只是很单纯的把各项操作转化为内部容器的对应调用,事实上,你可以使用任何sequence容器支持stack,只要它们提供函数:back()、push_back()、pop_back。
举个栗子
1 stack<int> st; //定义一个int类型内部为deque的stack 2 stack<int,vector<int>> st; //定义一个int类型内部为vector的stack
stack核心操作
1.核心接口成员函数
1 st.push();//将一个元素放入stack内 2 st.top();//返回stack内的“下一个”元素 3 st.pop();//从stack中移除元素
注意,pop弹出栈顶元素但不返回它,top返回栈顶元素但不移除它。两者在stack为空时使用会造成不明确的行为,所以在使用前可以采用 empty() 来检验stack是否为空
2.常用函数
1 st.size(); //返回stack内元素数量 2 st.empty(); //返回容器是否为空
3.comparison的重载
stack支持两个相同类型间的比较(比较原则是字典序),从栈底元素开始比较
comparison可以是下列任何运算:==、 !=、 >=、 <=、 >、 <。
本文主要针对的是竞赛方向的stack使用,没有涉及更深度的使用,若有错误,请提出指正。
如果能帮助到您,我会非常开心QWQ
2019-01-31
内容总结
以上是互联网集市为您收集整理的C++STL特殊容器stack全部内容,希望文章能够帮你解决C++STL特殊容器stack所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。