设计模式实现(十六)---迭代器模式(Iterator)
来源:互联网 发布:武汉人工智能创业公司 编辑:程序博客网 时间:2024/05/20 16:32
迭代器在比较高级的语言如Java,C#,C++中都已经集成进语言中,所以平时使用的并不过。学习该设计模式主要是为了学习iterator的实现原理。
迭代器模式.h
#include <vector>#include <string>using namespace std;class Object{public:string name;};//迭代器类,Iterator//用于定义得到开始对象、得到下一个对象、判断是否到结尾、当前对象等抽象方法,统一接口class Iterator{public:virtual string First() = 0;virtual string Next() = 0;virtual bool IsEnd() = 0;virtual string CurrentIterm() = 0;};//Aggregate 聚集抽象类class Aggregate{public:virtual Iterator *CreateIterator() = 0;};//具体集合类class ConcreteAggregate : public Aggregate{public:vector<string> iterms;public:Iterator *CreateIterator();int Count(){return (int)iterms.size();}string get(int index){return iterms[index];}};//ConcreteIterator 具体迭代器类,继承Iterator//不同的迭代器可以有不同迭代方式,比如从前向后,后者从后向前。需要的话可以自己在创建Iterator的子类class ConcreteIterator : public Iterator{private:ConcreteAggregate *aggregate;//定义了一个具体的聚集对象int current;public://初始化时将具体的聚集对象传入ConcreteIterator(ConcreteAggregate *aggregate){this->aggregate = aggregate;current = 0;}//得到聚集的第一个对象string First(){return aggregate->get(0);}//得到聚集的下一个对象string Next(){string ret = "";current++;if(current < aggregate->Count()){ret = aggregate->get(current);}return ret;}//判断是否结尾bool IsEnd(){return current >= aggregate->Count() ? true : false;}//返回当前聚集对象string CurrentIterm(){return aggregate->get(current);}};
#include <iostream>#include "迭代器模式.h"using namespace std;//迭代器模式Iterator *ConcreteAggregate::CreateIterator(){return new ConcreteIterator(this);}int main(){ConcreteAggregate a;a.iterms.push_back("小菜");a.iterms.push_back("大鸟");a.iterms.push_back("路人甲");a.iterms.push_back("路人乙");a.iterms.push_back("路人丙");a.iterms.push_back("路人丁");Iterator *i = new ConcreteIterator(&a);string item = i->First();while(!i->IsEnd()){cout << i->CurrentIterm() <<",请买票。"<<endl;i->Next();}return 1;}
0 0
- 设计模式实现(十六)---迭代器模式(Iterator)
- 设计模式之十六:迭代器模式(Iterator)
- C++设计模式之十六:Iterator 迭代器
- 设计模式(十六)----- 迭代器模式(Iterator)----(JAVA版)
- 浅谈Java设计模式(十六)迭代子模式(Iterator)
- JAVA--迭代子模式(Iterator)--设计模式十六
- 十六、迭代器模式Iterator(行为型)
- 设计模式C++实现十六:迭代器模式
- Java开发中的23种设计模式之十六:迭代器模式(Iterator)
- 设计模式(15) 迭代器模式(Iterator)C++实现
- 设计模式(十六)迭代器模式
- 设计模式—迭代器模式(十六)
- 设计模式--迭代器模式(Iterator)
- 设计模式之--迭代器模式(Iterator)
- java设计模式-迭代器模式(Iterator)
- 设计模式之(Iterator)迭代器模式
- java设计模式-迭代器模式(Iterator)
- 设计模式:迭代器模式(Iterator)
- 【线性扫描ijk_贪心】candy 最少蛋糕分配、Trapping Rain water
- 三个数求最大数
- HDU 2013 蟠桃记【递推】【递归】
- U-boot的环境变量值得注意的有两个: bootcmd 和bootargs
- VC各种格式转换
- 设计模式实现(十六)---迭代器模式(Iterator)
- servlet
- 串口收发数据时字符、十六进制、二进制格式详细区分
- 合作开发三层架构版机房中的一些工具软件
- 8月风怒
- SQL 忽略大小写模糊查询
- 又要搬家了
- U-boot在S3C2440上的移植详解(一)
- 初始化String的两种方法有何异同