STL - stack(栈)
2015-07-08 13:53
337 查看
Stack简介
stack是堆栈容器,是一种“先进后出”的容器。
stack是简单地装饰deque容器而成为另外的一种容器。
#include <stack>
stack对象的默认构造
stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT;
stack <int> stkInt; //一个存放int的stack容器。
stack <float> stkFloat; //一个存放float的stack容器。
stack <string> stkString; //一个存放string的stack容器。
...
//尖括号内还可以设置指针类型或自定义类型。
demo
stack是堆栈容器,是一种“先进后出”的容器。
stack是简单地装饰deque容器而成为另外的一种容器。
#include <stack>
stack对象的默认构造
stack采用模板类实现, stack对象的默认构造形式: stack <T> stkT;
stack <int> stkInt; //一个存放int的stack容器。
stack <float> stkFloat; //一个存放float的stack容器。
stack <string> stkString; //一个存放string的stack容器。
...
//尖括号内还可以设置指针类型或自定义类型。
stack的push()与pop()方法 stack.push(elem); //往栈头添加元素 stack.pop(); //从栈头移除第一个元素 stack<int> stkInt; stkInt.push(1);stkInt.push(3);stkInt.pop(); stkInt.push(5);stkInt.push(7); stkInt.push(9);stkInt.pop(); stkInt.pop(); 此时stkInt存放的元素是1,5 stack对象的拷贝构造与赋值 stack(const stack &stk); //拷贝构造函数 stack& operator=(const stack &stk); //重载等号操作符 stack<int> stkIntA; stkIntA.push(1); stkIntA.push(3); stkIntA.push(5); stkIntA.push(7); stkIntA.push(9); stack<int> stkIntB(stkIntA); //拷贝构造 stack<int> stkIntC; stkIntC = stkIntA; //赋值 stack的数据存取 <span style="white-space:pre"> </span>stack.top(); //返回最后一个压入栈元素 stack<int> stkIntA; stkIntA.push(1); stkIntA.push(3); stkIntA.push(5); stkIntA.push(7); stkIntA.push(9); int iTop = stkIntA.top(); //9 stkIntA.top() = 19; //19 stack的大小 stack.empty(); //判断堆栈是否为空 stack.size(); //返回堆栈的大小 stack<int> stkIntA; stkIntA.push(1); stkIntA.push(3); stkIntA.push(5); stkIntA.push(7); stkIntA.push(9); if (!stkIntA.empty()) { int iSize = stkIntA.size(); //5 }
demo
#include <iostream> #include <cstdio> #include <stack> #include <algorithm> using namespace std; void stackInit() { stack<int> s; // 入栈 for (int i = 0; i < 10; ++i) { s.push(i + 1); } cout << "size of s: " << s.size() << endl; while (!s.empty()) { cout << s.top() << ' '; // 获取栈顶元素 s.pop(); // 弹出栈顶元素 } cout << endl; } class Teacher { public: int age; char name[32]; public: void printTeacher() { cout << "age: " << age << endl; } }; void stackClass() { Teacher t1, t2, t3; t1.age = 21; t2.age = 22; t3.age = 23; stack<Teacher> s; s.push(t1); s.push(t2); s.push(t3); while (!s.empty()) { Teacher tmp = s.top(); s.pop(); tmp.printTeacher(); } /* age: 23 age: 22 age: 21 */ cout << endl; } void stackClassP() { Teacher t1, t2, t3; t1.age = 21; t2.age = 22; t3.age = 23; stack<Teacher *> s; s.push(&t1); s.push(&t2); s.push(&t3); while (!s.empty()) { Teacher *tmp = s.top(); s.pop(); tmp->printTeacher(); } /* age: 23 age: 22 age: 21 */ } int main() { stackInit(); stackClass(); stackClassP(); return 0; }
相关文章推荐
- cookie 编程
- JavaScript权威指南_127_第15章_脚本化文档_15.5-元素的内容-Text节点
- StringUtils 工具类的常用方法
- 南阳oj 题目4 ASCII码排序
- 浅谈Jmockit使用
- [Win32SDK基本] 模态窗口 和 多窗口
- 每天一个linux命令(20):find命令之exec
- 练手之作-公司点饭系统
- 深入Java集合学习系列:HashMap的实现原理
- SQL_ROW_NUMBER 用于分页存储
- How to write conditional equations
- ibatis.net中Iterate的使用
- 年轻人你活着不是为了看K线!
- Hibernate与JDBC事务整合
- poj1258 Agri-Net 最小生成树
- 系统管理:查看cpu、内存、磁盘、I/O、负载、性能状态
- 每天一个linux命令(19):find 命令概览
- Freemarker输出$和html标签等特殊符号
- IPA 包不经过APP Store直接发布到网站供用户下载安装
- 大数据架构及流处理架构