堆栈里的迭代器
来源:互联网 发布:oracle数据库迁移步骤 编辑:程序博客网 时间:2024/05/17 23:33
#include <iostream>using namespace std;class IntStack{private:enum {ssize = 100};int stack[ssize];int top;public:IntStack() : top(0){}//~IntStack(){}void push(int i){if (top <ssize)// 这个是判断条件,stack[top++] = i;}int pop() // 每pop一次堆栈里边就少一个数据,{if (top > 0) // 这个是判断条件,return stack[--top];}class iterator;friend class iterator;class iterator // 这个是做堆栈的迭代器,迭代器不会改变堆栈里边的数据,只能讲数据读取出来看,{private:IntStack& s;int index; // 索引,public:iterator(IntStack& is) : s(is), index(0) {}iterator(IntStack& is, bool) :s(is), index(s.top){}int current() const { return s.stack[index]; }int operator++() // 操作符重载前加加,{if (index < s.top)return s.stack[++index];}int operator++(int){if (index < s.top)return s.stack[index++];}iterator& operator+=(int amount){index += amount;return *this;}bool operator==(const iterator& rv) const{return index == rv.index;}bool operator!=(const iterator& rc) const{return index != rc.index;}friend ostream& operator<<(ostream& os, const iterator& it) // 输出流操作符重载,{return os << it.current();}};iterator begin() // begin 指向堆栈的第一个数据,{return iterator(*this);}iterator end() // end指向堆栈的最后一个数据的下一个,{return iterator(*this, true);}};int main(){IntStack a;a.push(8);a.push(9);a.push(10);a.push(11);//IntStack::iterator it(a);IntStack::iterator it(a.begin());while (it != a.end()){cout << it++ << endl;}cout << endl;IntStack::iterator start = a.begin();start += 2;cout << start.current() << endl;/*for (int i = 0; i < 4; i++)cout << it++ << endl; */ // 前加加输出9 10 11 还有一个随机数,后加加输出8 9 10 11return 0;}
0 0
- 堆栈里的迭代器
- Qt里的堆栈窗口的使用(系列一)
- Keil C51里关于堆栈指针的处理
- 为何汇编里调用C函数需要堆栈,而汇编语言的函数的调用却不需要堆栈
- Android使用Intent跳转的时候,如何清除堆栈里所有的Activity
- web developer tips (83):通过反射从堆栈里获取调用的方法名称
- 小example说明java的值传递和引用传递,基础变量和对象在内存里的区别,堆栈
- 堆栈上std::vector 析构后,程序崩溃,原来是我的project file里库文件指示出错
- JVM学习(2)——技术文章里常说的堆,栈,堆栈到底是什么,从os的角度总结
- lua里的迭代器
- 数据结构的堆栈和内存的堆栈
- 堆栈,堆栈,堆和栈的区别
- 堆栈,堆栈,堆和栈的区别
- 堆栈,堆栈,堆和栈的区别
- 堆栈,堆栈,堆和栈的区别
- 堆栈,堆栈,堆和栈的区别
- 堆栈,堆栈,堆和栈的区别
- 任务0的内核堆栈,用户堆栈
- iOS开发之直播App流程介绍,直播资料收集汇总,视频推流,视频拉流,SMTP、RTMP、HLS、 PLPlayerKit
- ssh 免密码登录
- oracle 12C 故障解析
- centOs6.5 SVN 服务器搭建并实现提交自动同步到web服务器
- android LRUCache源码分析
- 堆栈里的迭代器
- iOS 8 Auto Layout界面自动布局系列2-使用Xcode的Interface Builder添加布局约束
- python 利用requests 实现小米网登陆 的代码分享
- fopen()函数模式字符串
- 编辑距离、拼写检查与度量空间:一个有趣的数据结构
- Hibernate与java、标准sql数据类型对应关系
- Android四种启动Activity方式
- 一图片持续360度旋转
- Linux——搭建Redis集群