【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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语言和设计模式(迭代器模式)相关推荐

  1. java设计模式迭代器模式_迭代器设计模式示例

    java设计模式迭代器模式 本文是我们名为" Java设计模式 "的学院课程的一部分. 在本课程中,您将深入研究大量的设计模式,并了解如何在Java中实现和利用它们. 您将了解模式 ...

  2. java设计模式迭代器模式_Java中的迭代器设计模式–示例教程

    java设计模式迭代器模式 迭代器模式是一种行为模式,它用于提供遍历一组对象的标准方式. Iterator模式在Java Collection Framework中得到了广泛使用,其中Iterator ...

  3. java设计模式迭代器模式_迭代器模式和Java

    java设计模式迭代器模式 大家好,在本文中,我们将检查Iterator Pattern . 我知道你们中许多人已经使用过一种设计模式,但是也许您没有意识到它是模式,或者不知道它的巨大价值. 根据&l ...

  4. java设计模式迭代器模式_Java中的迭代器设计模式

    java设计模式迭代器模式 Iterator design pattern in one of the behavioral pattern. Iterator pattern is used to ...

  5. 23种设计模式-迭代器模式《三国名将》

    对于许久不用的东西,容易忘记.百度许久,也未能找到自己所要. 从今日起,有些东西就记载下来,不仅方便自己,希望能帮到他人吧! 定义 提供一种方法顺序访问一个聚合对象中各个元素,而又不需暴露该对象的内部 ...

  6. C语言实现设计模式—模板模式

    文章目录 C语言实现设计模式-模板模式 模板模式介绍 UML用例说明 实际场景使用 框架结构[共用框架]-通用的串口协议分析函数 不同实现-数据类型区别 C语言实现设计模式-模板模式 模板模式介绍 在 ...

  7. 解读设计模式----迭代器模式(Iterator Pattern),谁才是迭代高手

    一.你在开发中使用过迭代吗?      当你在使用JavaScript开发客户端应用的时候使用过for...in吗?  1<script type="text/javascript&q ...

  8. [Head First设计模式]生活中学设计模式——迭代器模式

    系列文章 [Head First设计模式]山西面馆中的设计模式--装饰者模式 [Head First设计模式]山西面馆中的设计模式--观察者模式 [Head First设计模式]山西面馆中的设计模式- ...

  9. java设计模式---迭代器模式

    定义:提供一种方法访问一个容器对象中各个元素,而又不暴露该对象的内部细节. 类型:行为类模式 类图:        如果要问java中使用最多的一种模式,答案不是单例模式,也不是工厂模式,更不是策略模 ...

  10. Java设计模式——迭代器模式

    概述 网上大部分人说迭代模式的时候,总是以某一种可遍历的对象为例进行介绍.这是可行的,这也是迭代模式的基本原型.当我看到<Head Frist设计模式>中迭代模式的时候,感觉要是能从另一个 ...

最新文章

  1. mysql 查询实体_mysql – 如何优化实体框架查询
  2. pandas set_index 与 reset_index
  3. aproxy配合Nginx搭建Web集群部署实验(图文详解)
  4. python苦逼_自学Python编程的第六天(最后代码有更好的请告诉我)----------来自苦逼的转行人...
  5. bootstraptable 列隐藏_bootstrap中table如何隐藏列?
  6. BookKeeper总结
  7. 微软符号服务器opencv的符号,Opencv Mat类详解和用法1
  8. Android 应用开发(20)--- 定义自定义应用程序权限
  9. hdu4410(Boomerang)(计算几何)
  10. 该设备或资源(Web代理)未设置为接受端口“7890“上的连接解决方案
  11. PyTorch:损失函数loss function
  12. 汉字与多字节编码的转换 - 回复 不知道 的问题
  13. MVC5为WebAPI添加命名空间的支持
  14. 基于HLS流媒体协议视频加密的解决方案
  15. Python常用音频库
  16. 移动办公系统 服务器地址,移动办公怎么设置服务器地址
  17. 将win10的屏幕颜色调成护眼色豆沙绿
  18. 设置Button图片位置
  19. 这个社会在极严厉地惩罚不好好读书的人
  20. Pycharm:解决点击重运行(Rerun)没有反应

热门文章

  1. quickServer介绍
  2. 用HTML5 Canvas为网页添加动态波浪背景
  3. Nagios 监控windows性能计数器
  4. 【转载】Ogre的内存分配策略
  5. Linux***检测基础学习
  6. beaglebone black的cape管理
  7. 证书(3)如何在程序中使用数字证书
  8. C#- Chart Controls (转)
  9. luogu P2018 消息传递
  10. tomcat安装apr报错解决