iterator模式

作者: 老练子丶2017 | 来源:发表于2017-11-23 21:02 被阅读0次

类似于stl里面的迭代器

iterator.h

#ifndef _ITERATOR_H

#define _ITERATOR_H

#include <iostream>

#include <vector>

using namespace std;

template <class item>

class Iterator

{

public:

virtual ~Iterator() {}

virtual void first()=0;

virtual void next()=0;

virtual item* currentItem()=0;

virtual bool isDone()=0;

};

template <class item>

{

public:

virtual ~Aggregate() {}

virtual Iterator*<item> createIterator()=0;

virtual void pushData(item)=0;

};

template <class item>

class ConcreteIterator;

template<class item>

class ConcreteAggregate : public Aggregate<item>

{

public: ConcreteAggregate() { }

int getLen() { return data.size(); }

void pushData(item a) { data.push_back(a); }

item& operator[](int index) { return data[index]; }

Iterator<item>* createIterator() { return new ConcreteIterator<item>(this); }

private:

vector<item> data;

};

template<class item>

class ConcreteIterator : public Iterator<item>

{

public:

ConcreteIterator(ConcreteAggregate<item>* a) : aggr_(a), cur_(0) {}

void first() { cur_ = 0; }

void next() { if (cur_ < aggr_->getLen()) { cur_ ++; } }

bool isDone() { return (cur_ >= aggr_->getLen()); }

item* currentItem() { if (cur_ < aggr_->getLen()) { return &(*aggr_)[cur_]; } else { return NULL; } }

private:

int cur_;

ConcreteAggregate<item>* aggr_;

}

#endif // _ITERATOR_H

iterator.cpp

#include "iterator.h"

int main()

 Aggregate<int>* aggr = new ConcreteAggregate<int>(); 

 aggr->pushData(1); 

 aggr->pushData(2); 

 aggr->pushData(3); 

 Iterator<int>* it = aggr->createIterator();

for (it->first(); !it->isDone(); it->next()) {

cout << *(it->currentItem())  << endl;

}

return 0;

}

编译:make iterator

相关文章

  • Iterator模式

    迭代器模式(Iterator模式) 定义: 迭代器(Iterator)模式,又叫做游标(Cursor)模式。 ...

  • 设计模式用例(三)

    Strategy 模式 Bridge 模式 Iterator 模式

  • 编程思想

    图解设计模式 Iterator 模式 设计模式 Iterator 模式如何提升你的阅读能力? 导读:今天这篇文章是...

  • 函数式编程下的Iterator模式

    在模式下,Iterator模式是一个思路相对简单的模式。迭代器(Iterator)模式,又叫做游标(Cursor)...

  • 迭代器模式 Iterator Pattern

    迭代器模式(Iterator Pattern)属于行为型模式。Iterator pattern 提供了循环集合的标...

  • 1. Iterator模式-一个一个遍历

    时间: 2019-04-29 1.1 Iterator模式概念 Iterator模式: 用于在数据集合中按照顺序遍...

  • Design(一)-Iterator设计模式

    Iterator设计模式 简介: Iterator设计模式在数据集合中按照顺序遍历集合. 英语单词Iterate有...

  • 图解设计模式Iterator模式

    Iterator设计模式UML图 Iterator(迭代器) ConcreteIterator(具体的迭代器) A...

  • iterator模式

    类似于stl里面的迭代器 iterator.h #ifndef _ITERATOR_H#define _ITERA...

  • Iterator模式

    Iterator模式用于在数据集合中按照顺序遍历集合。英语单词Iterate有重复做某件事情的意思。也叫做“迭代器...

网友评论

    本文标题:iterator模式

    本文链接:https://www.haomeiwen.com/subject/hsstbxtx.html