stack堆栈容器
来源:互联网 发布:淘宝店铺全屏装修教程 编辑:程序博客网 时间:2024/04/30 20:01
堆栈是一种线性表,插入和删除操作只在表的一端进行,该端成为栈顶,另一端则称为栈底。元素的入栈和出栈都是在栈顶进行的,因此堆栈是一种后进先出表(LIFO)。C++ STL的堆栈泛化是通过现有的序列容器来实现的,默认使用的是双端队列deque的数据结构。在STL中,stack的元素出栈操作是不返回栈顶元素的,获得栈顶元素需要调用相应的取栈顶函数才能获得,这种分离的实现,是考虑到出栈函数若是直接返回栈顶元素,将会导致返回值的数据引用安全问题或者不必要的低效复制函数的调用。
创建stack对象
主要有以下两种方式。
(1) stack()
stack<int> s;
(2) stack(const stack&)
复制构造函数。
stack<int,list<int>> s1;
stack<int,list<int>> s2(s1);
元素入栈
入栈函数为push函数,C++的STL是不预设堆栈的大小的,入栈函数不考虑堆栈空间是否为满,均将元素压入堆栈。
stack<int> s;
s.push(1);
s.push(2);
s.push(3);
元素出栈
出栈函数为pop函数,该函数并没有判断堆栈是否为空,需要自行判断堆栈是否为空,才可以执行pop函数。
stack<int> s;
while(!s.empty())
{
s.pop();
}
取栈顶元素
堆栈stack容器的栈顶元素的读取函数为top函数,取栈顶元素也要判断堆栈是否为空,取出的栈顶元素才有意义。
cout<<s.top()<<endl;
s.pop();
栈顶判断是否为空利用函数empty。
#include<iostream>#include<stack>using namespace std;int main(){stack<int> s;s.push(1);s.push(2);s.push(3);s.push(4);s.push(5);while(!s.empty()){cout<<s.top()<<endl;//5、4、3、2、1s.pop();}return 0;}
堆栈的大小
堆栈元素的个数可以用size函数来获得。
#include<iostream>#include<stack>#include<list>#define STACK_SIZE 100using namespace std;int main(){stack<int,list<int> > s;if(s.size()<STACK_SIZE){s.push(68);}if(s.size()<STACK_SIZE){s.push(50);}if(s.size()<STACK_SIZE){s.push(10);}while(!s.empty()){cout<<s.top()<<endl;//10/50/68 s.pop();}return 0;}
1 0
- stack堆栈容器
- stack堆栈容器
- stack堆栈容器
- STL stack堆栈容器
- stack堆栈容器
- 笔记之stack堆栈容器
- stack堆栈容器(转)
- C++ STL--stack堆栈容器学习笔记
- C_栈和队列----stack堆栈容器
- STL(十八)stack堆栈容器
- STL序列式容器之堆栈——stack
- ACM学习历程18——stack堆栈容器
- 堆栈(stack)
- 堆栈stack
- Stack容器
- stack容器
- stack容器
- [C++ 从入门到放弃-08]C++STL之stack堆栈容器
- listview属性集合
- Jquery的$.ajax和$.post,$.get的用法总结
- 题目:字符串查找
- java中将由数字组成的字符串型(String)转换成整型(int)
- NIO(JDK1.4)--选择器Selector
- stack堆栈容器
- oracle游标:查询并打印员工的姓名和薪水
- PAT-PAT (Advanced Level) Practise 1008. Elevator (20) (简单模拟)【一星级】
- 题目:将整数A转换为B
- 第十章 面向对象编程:继承和多态
- 几种TCP连接中出现RST的情况
- ObjectiveC开发教程--字符串的基本操作处理方法
- Java记录
- windows获取.exe文件版本号