C语言和设计模式(迭代器模式)
【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing @163.com】
使用过C++的朋友大概对迭代器模式都不会太陌生。这主要是因为我们在编写代码的时候离不开迭代器,队列有迭代器,向量也有迭代器。那么,为什么要迭代器呢?这主要是为了提炼一种通用的数据访问方法。
比如说,现在有一个数据的容器,
typedef struct _Container
{int* pData;int size;int length;Interator* (*create_new_interator)(struct _Container* pContainer);int (*get_first)(struct _Container* pContainer);int (*get_last)(struct _Container* pContainer);}Container;
我们看到,容器可以创建迭代器。那什么是迭代器呢?
typedef struct _Interator
{void* pVector;int index;int(* get_first)(struct _Interator* pInterator); int(* get_last)(struct _Interator* pInterator);
}Interator;
我们看到,容器有get_first,迭代器也有get_first,这中间有什么区别?
int vector_get_first(struct _Container* pContainer)
{assert(NULL != pContainer);return pContainer->pData[0];
}int vector_get_last(struct _Container* pContainer)
{assert(NULL != pContainer);return pContainer->pData[pContainer->size -1];
}int vector_interator_get_first(struct _Interator* pInterator)
{Container* pContainer;assert(NULL != pInterator && NULL != pInterator->pVector);pContainer = (struct _Container*) (pInterator->pVector);return pContainer ->get_first(pContainer);
}int vector_interator_get_last(struct _Interator* pInterator)
{Container* pContainer;assert(NULL != pInterator && NULL != pInterator->pVector);pContainer = (struct _Container*) (pInterator->pVector);return pContainer ->get_last(pContainer);
}
看到上面的代码之后,我们发现迭代器的操作实际上也是对容器的操作而已。
C语言和设计模式(迭代器模式)相关推荐
- java设计模式迭代器模式_迭代器设计模式示例
java设计模式迭代器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式 ...
- java设计模式迭代器模式_Java中的迭代器设计模式–示例教程
java设计模式迭代器模式 迭代器模式是一种行为模式,它用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator ...
- java设计模式迭代器模式_迭代器模式和Java
java设计模式迭代器模式 大家好,在本文中,我们将检查Iterator Pattern . 我知道你们中许多人已经使用过一种设计模式,但是也许您没有意识到它是模式,或者不知道它的巨大价值. 根据&l ...
- java设计模式迭代器模式_Java中的迭代器设计模式
java设计模式迭代器模式 Iterator design pattern in one of the behavioral pattern. Iterator pattern is used to ...
- 23种设计模式-迭代器模式《三国名将》
对于许久不用的东西,容易忘记.百度许久,也未能找到自己所要. 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部 ...
- C语言实现设计模式—模板模式
文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...
- 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手
一.你在开发中使用过迭代吗? 当你在使用JavaScript开发客户端应用的时候使用过for...in吗? 1<script type="text/javascript&q ...
- [Head First设计模式]生活中学设计模式——迭代器模式
系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...
- java设计模式---迭代器模式
定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节. 类型:行为类模式 类图: 如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模 ...
- Java设计模式——迭代器模式
概述 网上大部分人说迭代模式的时候,总是以某一种可遍历的对象为例进行介绍.这是可行的,这也是迭代模式的基本原型.当我看到<Head Frist设计模式>中迭代模式的时候,感觉要是能从另一个 ...
最新文章
- mysql 查询实体_mysql – 如何优化实体框架查询
- pandas set_index 与 reset_index
- aproxy配合Nginx搭建Web集群部署实验(图文详解)
- python苦逼_自学Python编程的第六天(最后代码有更好的请告诉我)----------来自苦逼的转行人...
- bootstraptable 列隐藏_bootstrap中table如何隐藏列?
- BookKeeper总结
- 微软符号服务器opencv的符号,Opencv Mat类详解和用法1
- Android 应用开发(20)--- 定义自定义应用程序权限
- hdu4410(Boomerang)(计算几何)
- 该设备或资源(Web代理)未设置为接受端口“7890“上的连接解决方案
- PyTorch:损失函数loss function
- 汉字与多字节编码的转换 - 回复 不知道 的问题
- MVC5为WebAPI添加命名空间的支持
- 基于HLS流媒体协议视频加密的解决方案
- Python常用音频库
- 移动办公系统 服务器地址,移动办公怎么设置服务器地址
- 将win10的屏幕颜色调成护眼色豆沙绿
- 设置Button图片位置
- 这个社会在极严厉地惩罚不好好读书的人
- Pycharm:解决点击重运行(Rerun)没有反应