迭代器模式----C++实现

迭代器模式

定义:

提供一个方法顺心访问一个聚合对象中各个元素,而又不需要暴露该对象的内部表示。

适用性:

1、 访问一个聚合对象的内容而无需暴露它的内部表示。

2、 支持聚合对象的多种遍历

3、 为遍历不同的聚合结构提供一个统一的接口。

迭代器的作用:

1、 支持以不同的方式遍历一个聚合。

2、 迭代器简化了聚合的接口

3、 在同一个聚合上可以有多个遍历。

结构:

迭代器模式----C++实现

实现:

template

class Iterator

{

public:

virtual void First() = 0;

virtual void Next() = 0;

virtual bool isDone() = 0;

virtualItem CurrentItem() = 0;

};

template

class Agrregate

{

public:

virtualIterator* CreateIterator() = 0;

virtual~Agrregate() {}

};

template

class ConcreteIterator;

template

class ConcreteAgrregate:public Agrregate

{

public:

ConcreteAgrregate(){}

~ConcreteAgrregate(){}

Iterator* CreateIterator()

{

returnnew ConcreteIterator(this);

}

voidAddItem(Item val)

{

m_itemVec.push_back(val);

}

int Size()

{

returnm_itemVec.size();

}

voidRemoveItem(Item val)

{

vector::iterator it =find(m_itemVec.begin(),m_itemVec.end(),val);

if(it != m_itemVec.end())

{

m_itemVec.erase(it);

}

}

Item& operator[](int index)

{

returnm_itemVec[index];

}

private:

vector m_itemVec;

};

template

class ConcreteIterator:public Iterator

{

public:

ConcreteIterator(ConcreteAgrregate*pAggregate):m_Aggregate(*pAggregate),m_curIndex(0)

{ }

void First()

{

m_curIndex = 0;

}

void Next()

{

if (m_curIndex

{

++m_curIndex;

}

}

bool isDone()

{

if (m_curIndex== m_Aggregate.Size() - 1)

{

return true;

}

return false;

}

Item CurrentItem()

{

if (m_curIndex

{

returnm_Aggregate[m_curIndex];

}

}

private:

long m_curIndex;

ConcreteAgrregate m_Aggregate;

};

ConcreteAgrregate *pa = new ConcreteAgrregate();

pa->AddItem(5);

pa->AddItem(15);

pa->AddItem(54);

pa->AddItem(65);

pa->AddItem(57);

pa->AddItem(59);

pa->AddItem(50);

coutSize()

Iterator*pit = pa->CreateIterator();

for(pit->First(); !pit->isDone(); pit->Next() )

{

coutCurrentItem()

}

cout

点击复制链接 与好友分享!回本站首页
您对本文章有什么意见或着疑问吗?请到论坛讨论您的关注和建议是我们前行的参考和动力
上一篇:C/C++网络编程总结与ZeroMQ
下一篇:poj3080
相关文章

C++中CONST迭代器 和 CONST_ITERATO

使用迭代器寻找和删除 string 对象中

迭代法解方程:牛顿迭代法、Jacobi迭代

STL,迭代器的C++简单实现

深入设模式之:迭代器模式之编写一个兼

深究递归和迭代的区别、联系、优缺点及

二叉树的遍历的迭代和递归实现方式

递归与迭代

TCPL C++迭代器的用法 用作参数传递

C++模板实战5: 迭代器与容器

图文推荐
迭代器模式----C++实现
ZOJ 3640 Help Me
迭代器模式----C++实现
CF 518C(Anya and
迭代器模式----C++实现
hdu 1016 Prime R
UVA - 11987 - A

分类:默认分类 时间:2012-12-27 人气:4
本文关键词:
分享到:

相关文章

Copyright (C) quwantang.com, All Rights Reserved.

趣玩堂 版权所有 京ICP备15002868号

processed in 0.038 (s). 9 q(s)