【 声明:版权所有,欢迎转载,请勿用于商业用途。  联系信箱: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. pthread相关介绍
  2. 鸿蒙上海开发者日直播,华为鸿蒙 OS 开发者日于 4月17 日上海举行
  3. android 电视关闭动画,Activity 展开和关闭动画
  4. Kolor Panotour Pro 使用方法
  5. Neither spark.yarn.jars nor spark.yarn.archive is set
  6. Glob Patterns匹配模式使用
  7. A Software Developer’s Reading Plan
  8. 摆花(2012Noip普及组第3题)
  9. HTML+CSS详解
  10. dadayi大一c语言累加编程题,c++习题答案中国电力出版社
  11. 中国大数据与智能计算产业联盟“开源软件工作委员会”成立会议在京召开
  12. 蜂考数据结构c语言版答案
  13. 华为关闭telnet命令_运营商定制的华为光猫Telnet命令恢复华为界面
  14. JAVA跑步计时器app_锻炼计时器app
  15. sql 累计占比_sql 面试题(难题汇总)
  16. 基于51单片机 + MQ-3酒精传感器 + ADC0832模数转换器 + LCD1602液晶显示器的酒精检测系统
  17. java栈与堆的区别
  18. Intel TBB 介绍
  19. Docker | Docker 快速搭建 TensorRT 环境(超详细)
  20. 技术探究|Apache Pulsar 认证与鉴权实践指南

热门文章

  1. 匿名函数的简单理解和应用
  2. 《JUnit实战(第2版)》—第1章1.2节从零开始
  3. DDL/DML/DCL/TCL基本概念
  4. Python大数据依赖包安装
  5. 课程、问题-利用mincemeat编写简单的MapReduce程序-by小雨
  6. 忍不住了, 和大家聊聊怎么写简历吧, 关于简历的深度思考
  7. 计算机技术中的常见概念
  8. Activiti 用户任务并行动态多实例(多用户执行流程)
  9. springboot jar包运行中获取资源文件
  10. Java套接字Socket编程--TCP参数