迭代器模式

迭代器 

迭代器Iterator)模式:提供一种方法访问一个容器(container)对象中各个元素,而又不需暴露该对象的内部细节。

迭代器模式由以下角色组成:

1) 迭代器角色(Iterator):迭代器角色负责定义访问和遍历元素的接口。

2) 具体迭代器角色(Concrete Iterator):具体迭代器角色要实现迭代器接口,并要记录遍历中的当前位置。

3) 容器角色(Container):容器角色负责提供创建具体迭代器角色的接口。

4) 具体容器角色(Concrete Container):具体容器角色实现创建具体迭代器角色的接口——这个具体迭代器角色于该容器的结构相关。

迭代器模式的类图如下:

 

pecker_framework/data数据结构部分目前使用到的迭代器主要有两类,线性迭代器和树结构迭代器。

线性迭代器,主要包含动态数组用的数组迭代器(代码在pecker_array_iterator.h中),线性链表用的链表迭代器。

树结构迭代器,提供中序遍历迭代器,后续遍历迭代器两种,主要包含AVL树专用迭代器(代码在pecker_avl_tree.h中),通用二叉搜索树(节点中可不含父节点)的迭代器(代码在pecker_bst_iterator.h中),以及通用三叉搜索树的中序遍历迭代器(代码在pecker_bst_iterator.h中)。

    在目前版本中迭代器区别于 STL 的迭代器在于, STL 的迭代器大多为编译时迭代器,而 pecker_framework/data 的迭代器以运行时迭代器为主,支持一个容器对象使用多种迭代遍历方式,可以自行实现自定义迭代,并运行时选择性加载。

 

相关代码:http://www.oschina.net/code/snippet_253717_17593

转载于:https://my.oschina.net/u/253717/blog/100195

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值