大胖的部落格
Just a note
C++博客
::
首页
::
新随笔
::
联系
::
聚合
::
管理
::
112 随笔 :: 0 文章 :: 3 评论 :: 0 Trackbacks
<
2009年6月
>
日
一
二
三
四
五
六
31
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
1
2
3
4
5
6
7
8
9
10
11
留言簿
给我留言
查看公开留言
查看私人留言
随笔分类
Algorithm(13)
(rss)
C#(13)
(rss)
C++(22)
(rss)
Design Pattern(23)
(rss)
Others(14)
(rss)
STL(9)
(rss)
Technical(2)
(rss)
UML(2)
(rss)
Win32(18)
(rss)
Reference
Windows XP command line
最新评论
1. re: 在TCL命令行中调用C函数
@Kenny
实在不好意思,时间太过久远,本人已好久没有接触TCL……
--大胖
2. re: 在TCL命令行中调用C函数
請問如何溝通array 變數
Q:1
tcl array in C
Q:2
C array in tcl
懇求指導
--Kenny
3. re: 在TCL命令行中调用C函数
谢谢!
--1232
Iterator
封装一个Iterator类,提供方法访问一个聚合对象中各个元素,而又不暴露该对象的内部表示。
这样可以对同一个聚合同时有多个遍历。
#include
<
iostream
>
using
namespace
std;
//
封装了一个int数组
class
Aggregate
{
public
:
Aggregate(
int
is
):size(
is
)
{
i
=
new
int
[size];
while
(
is
>
0
)
{
i[size
-
is
]
=
size
-
is
;
--
is
;
}
}
~
Aggregate()
{delete i;}
int
GetSize()
const
{
return
size;}
int
GetItem(
int
index)
const
{
return
i[index];}
private
:
int
size;
int
*
i;
}
;
//
遍历Aggregate的迭代器
class
Iterator
{
public
:
Iterator(Aggregate
*
p):pa(p),index(
0
)
{}
void
Start()
{
index
=
0
;
}
bool
IsEnd()
const
{
return
index
==
pa
->
GetSize()
-
1
;
}
void
Previous()
{
if
(index
>
0
)
--
index;
}
void
Next()
{
if
(index
<
pa
->
GetSize()
-
1
)
++
index;
}
int
GetValue()
const
{
return
pa
->
GetItem(index);
}
private
:
int
index;
Aggregate
*
pa;
}
;
int
main()
{
Aggregate
*
pa
=
new
Aggregate(
5
);
Iterator
*
pi
=
new
Iterator(pa);
//
最后一个未输出
while
(
!
pi
->
IsEnd())
{
cout
<<
pi
->
GetValue()
<<
endl;
pi
->
Next();
}
delete pi;
delete pa;
return
0
;
}
posted on 2009-06-10 10:38
大胖
阅读(129)
评论(0)
编辑
收藏
引用
所属分类:
Design Pattern
只有注册用户
登录
后才能发表评论。
【推荐】100%开源!大型工业跨平台软件C++源码提供,建模,组态!
相关文章:
常用设计模式
State
Visitor
Template Method
Observer
Memento
Mediator
Iterator
Command
Chain of Responsibility
网站导航:
博客园
IT新闻
BlogJava
博问
Chat2DB
管理
Powered by:
C++博客
Copyright © 大胖