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