STL - stack(栈)
来源:互联网 发布:前端优化实现etag 编辑:程序博客网 时间:2024/05/21 06:33
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();//9stkIntA.top() = 19;//19stack的大小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: 23age: 22age: 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: 23age: 22age: 21*/}int main(){stackInit();stackClass();stackClassP();return 0;}
0 0
- STL:栈(stack)
- STL - stack(栈)
- stack栈(STL)
- STL之stack(栈)
- STL之stack(栈)
- 关于STL(stack)栈堆
- C++ STL stack实现(栈)
- STL中stack(栈)的用法
- STL stack栈
- STL-栈stack
- STL之stack(栈)
- C++ STL stack栈
- STL容器stack栈
- STL-stack(栈)
- STL-stack实现栈
- 【STL】栈适配器stack
- [转载] STL 之 stack 栈
- STL—— stack栈
- SQL_ROW_NUMBER 用于分页存储
- [Win32SDK基本] 模态窗口 和 多窗口
- StringUtils 工具类的常用方法
- JavaScript权威指南_127_第15章_脚本化文档_15.5-元素的内容-Text节点
- 每天一个linux命令(21):find命令之xargs
- STL - stack(栈)
- sizeof用法汇总
- cookie 编程
- java 使用 fastjson 处理 json
- searchbar下的搜索图标及textfiled样式修改
- 《博弈论基础》mooc学习感想
- opencv 绘图 cvLine cvRectangle cvCircle cvEllipse cvEllipseBox cvFillPoly cvConvexPoly cvPolyLine
- CSS 小技巧1——水平居中和垂直居中的方法
- auto_ptr源码