设计模式简单代码之Iterator模式
来源:互联网 发布:手机淘宝评价怎么修改 编辑:程序博客网 时间:2024/04/29 19:26
Iterator模式,也称为迭代器模式。
该模式主要用于将列表的访问和遍历分离出来并放进一个迭代器中。例如STL库的容器就大量的用到Iterator模式。
该模式还涉及到一些“内部迭代器”和“外部迭代器”的概念,这属于进一步的研究,暂时不谈。
下面看看简单的例子代码(模仿STL的做法):
// Iterator.cpp
#include <iostream>
using namespace std;
class ArrayList
...{
public:
typedef int* Iterator;
ArrayList()
...{
cnt = 0;
}
// 这里可以看出来Iterator实际上是一个 int* 类型的指针
Iterator Begin()
...{
return &arr[0];
}
Iterator End()
...{
return &arr[cnt];
}
void Insert(int v)
...{
if(cnt >= 100 )
...{
cout << "列表容量已满,不可再插入。" << endl;
return;
}
arr[cnt] = v;
cnt++;
}
private:
int cnt;
int arr[100];
};
void main()
...{
ArrayList list;
for(int i = 0; i < 110; i++)
...{
list.Insert(i);
}
ArrayList::Iterator it;
for (it = list.Begin(); it != list.End(); it++)
...{
cout << *it << endl;
}
}
using namespace std;
class ArrayList
...{
public:
typedef int* Iterator;
ArrayList()
...{
cnt = 0;
}
// 这里可以看出来Iterator实际上是一个 int* 类型的指针
Iterator Begin()
...{
return &arr[0];
}
Iterator End()
...{
return &arr[cnt];
}
void Insert(int v)
...{
if(cnt >= 100 )
...{
cout << "列表容量已满,不可再插入。" << endl;
return;
}
arr[cnt] = v;
cnt++;
}
private:
int cnt;
int arr[100];
};
void main()
...{
ArrayList list;
for(int i = 0; i < 110; i++)
...{
list.Insert(i);
}
ArrayList::Iterator it;
for (it = list.Begin(); it != list.End(); it++)
...{
cout << *it << endl;
}
}
- 设计模式简单代码之Iterator模式
- 设计模式简单代码之Iterator模式
- 设计模式之Iterator
- 设计模式之Iterator
- 设计模式之 iterator
- 设计模式之Iterator
- 设计模式之Iterator
- 设计模式之Iterator
- 设计模式之iterator
- 设计模式之Iterator
- 设计模式之Iterator模式
- 设计模式之Iterator模式
- 设计模式简单代码之Flyweight模式
- 设计模式简单代码之Memento模式
- 设计模式简单代码之Strategy模式
- 设计模式简单代码之State模式
- 设计模式简单代码之Visitor模式
- 设计模式简单代码之Visitor模式
- VS2005中的新项目类型:Web Deployment Projects
- 长篇)明朝的那些事儿-历史应该可以写得好看[324]
- 创造扫雷新纪录,纪念一下……
- C#编写最小化时隐藏为任务栏图标的Window appllication
- session丢失问题
- 设计模式简单代码之Iterator模式
- 国内Wiki发展的现状与趋势探析
- Firefox中的canvas标记
- Spring Framework 2.0 Reference翻译项目过半
- JBossAS性能优化和瘦身系列(5):Log4j
- 希望有一天
- 将来12个月内java技术前瞻--来自16位德国java专家
- 游戏程序员的开源工具箱
- 类设计能力