Iterator (C++实现)
来源:互联网 发布:安禄山 知乎 编辑:程序博客网 时间:2024/04/30 18:41
// Iterator.cpp : 定义控制台应用程序的入口点。
//
#include "stdafx.h"
#include <iostream>
using namespace std;
typedef int DATA;
class Iterator;
class Aggregate
{
public:
Aggregate()
{
}
virtual ~Aggregate()
{
}
virtual Iterator* CreateIterator()=0;
virtual int GetSize()=0;
virtual DATA GetItem(int index)=0;
};
class Iterator
{
public:
Iterator()
{}
virtual~ Iterator()
{}
virtual void First()=0;
virtual void Next()=0;
virtual bool IsDone()=0;
virtual DATA CurrentItem()=0;
};
class ConcreteIterator:public Iterator
{
public:
ConcreteIterator(Aggregate* p):m_pConcreteAggregate(p),m_index(0)
{
}
virtual ~ConcreteIterator()
{
}
virtual void First()
{
m_index=0;
}
virtual void Next()
{
if(m_index<m_pConcreteAggregate->GetSize() )
{
m_index++;
}
}
virtual bool IsDone()
{
return m_index==m_pConcreteAggregate->GetSize();
}
virtual DATA CurrentItem()
{
return m_pConcreteAggregate->GetItem(m_index);
}
private:
Aggregate * m_pConcreteAggregate;
int m_index;
};
class ConcreteAggregate:public Aggregate
{
public:
ConcreteAggregate(int size):m_size(size)
{
m_pData=new DATA[m_size];
for(int i=0;i<m_size;i++)
{
m_pData[i]=i;
}
}
virtual ~ ConcreteAggregate()
{
delete []m_pData;
m_pData=NULL;
}
virtual Iterator* CreateIterator()
{
return new ConcreteIterator(this);
}
virtual int GetSize()
{
return m_size;
}
virtual DATA GetItem(int index)
{
if(index<m_size)
{
return m_pData[index];
}
else
{
return -1;
}
}
private:
int m_size;
DATA *m_pData;
};
int _tmain(int argc, _TCHAR* argv[])
{
Aggregate * pAggregate=new ConcreteAggregate(10);
Iterator * pIterator=pAggregate->CreateIterator();
for(;false==pIterator->IsDone();pIterator->Next())
{
cout<<pIterator->CurrentItem()<<endl;
}
return 0;
}
- [C++]List with iterator(链表的迭代器实现)
- Iterator (C++实现)
- [C++]Deque with iterator实现细节
- Design Pattern - Iterator(C#)
- c ++ iterator
- [C++]iterator
- 迭代器(Iterator)的简单实现
- C++vector 迭代器iterator
- 【c++】迭代器iterator
- Java Iterator实现
- iterator的简单实现
- 实现二叉树中序Iterator
- Iterator实现源码分析
- 模拟实现list(iterator)
- Iterator原理及实现
- C++Primer——迭代器iterator(1)
- c++primer学习笔记(3.4)迭代器iterator
- 设计模式(c++)笔记之二十二(Iterator模式)
- 使用Google日历共享招聘会日历表
- Linux下通过EXPECT脚本自动执行ssh远程连接
- chrome快捷键
- android 编译命令
- 键盘扫描--keyscan
- Iterator (C++实现)
- windows 2003 sp2 支持IIS+PHP+MYSQL+PHPmyadmin如何设置
- android logcat 无法正常输出
- 关于.NET应用程序中的资源
- 1000以内的完数--经典c程序100例
- Linux下运行OProfile进行系统性能分析
- C#对SQL Server数据库封装
- 论德国人的计划取向意识
- http长连接与短连接