- 浏览: 369926 次
- 性别:
- 来自: 苏州
文章分类
- 全部博客 (335)
- C++ (190)
- 设计模式 (43)
- 数据库技术 (5)
- 网络编程 (11)
- 自动化测试 (6)
- Linux (13)
- OpenSSL (10)
- MS Crypt API (5)
- SCM (2)
- English (4)
- Android (10)
- EMV规范 (1)
- Saturn Platform (0)
- C (10)
- SQL (2)
- ASP.NET (3)
- 英语口语学习 (3)
- 调试工具 (21)
- 编译技术 (5)
- UML (1)
- 项目管理 (5)
- 敏捷开发 (2)
- Http Server (6)
- 代码审查、代码分析 (5)
- 面试基础 (10)
- 重点知识 (16)
- STL (6)
- Efficient C++资料 (8)
- 数据结构和算法 (7)
- 读书笔记 (0)
- 开源项目 (4)
- 多线程 (2)
- Console App (6)
- 个人开源项目 (4)
- IBM DevelopWorks (4)
- Java (16)
- 内存泄漏相关调试和检测 (13)
- 软件测试相关技术 (2)
- C# (11)
- Apple Related (1)
- 软件测试和管理 (2)
- EMV (1)
- Python (1)
- Node.js (6)
- JavaScript (5)
- VUE (1)
- Frontend (1)
- Backend (4)
- RESTful API (3)
- Firebase (3)
最新评论
-
u013189503:
来个密码吧
[C++][Logging] 项目中写日志模块的实现 -
wyf_vc:
来个密码啊!!
[C++][Logging] 项目中写日志模块的实现
头文件
//IteratorPattern.h #ifndef INTERATOR_PATTERN_H #define INTERATOR_PATTERN_H #include <Windows.h> #include <iostream> #include <vector> using namespace std; namespace IteratorPattern { template<class Item> class Iterator { public: virtual void First()=0; virtual void Next()=0; virtual Item* CurrentItem()=0; virtual bool IsDone()=0; virtual ~Iterator(); }; template<class Item> class ConcreteAggregate; template<class Item> class ConcreteIterator : public Iterator <Item> { public: ConcreteIterator(ConcreteAggregate<Item>* pAggr); virtual void First(); virtual void Next(); virtual Item* CurrentItem(); virtual bool IsDone(); private: ConcreteAggregate<Item>* m_pAggr; int m_nCur; }; template<class Item> class Aggregate { public: virtual Iterator<Item>* CreateIterator()=0; virtual ~Aggregate(); }; template<class Item> class ConcreteAggregate:public Aggregate<Item> { public: ConcreteAggregate(); virtual Iterator<Item>* CreateIterator(); Item& operator[](int index); int GetLen(); private: vector<Item >m_Data; }; ////////////////////////////////////////////////////////////////////////// void IteratorPattern_Test(); } #endif
实现
#include "IteratorPattern.h" #include <iostream> using namespace std; #define SAFE_DELETE(p) if (p) { delete p; p = NULL; } namespace IteratorPattern { ////////////////////////////////////////////////////////////////////////// template<class Item> Iterator<Item>::~Iterator(){} template<class Item> ConcreteIterator<Item>::ConcreteIterator(ConcreteAggregate<Item>*a) : m_pAggr(a) , m_nCur(0) {} template<class Item> void ConcreteIterator<Item>::First() { m_nCur=0; } template<class Item> void ConcreteIterator<Item>::Next() { if(m_nCur<m_pAggr->GetLen()) m_nCur++; } template<class Item> Item* ConcreteIterator<Item>::CurrentItem() { if(m_nCur<m_pAggr->GetLen()) return &(*m_pAggr)[m_nCur]; else return NULL; } template<class Item> bool ConcreteIterator<Item>::IsDone() { return (m_nCur>=m_pAggr->GetLen()); } ////////////////////////////////////////////////////////////////////////// template<class Item> Aggregate<Item>::~Aggregate(){} template<class Item> ConcreteAggregate<Item>::ConcreteAggregate() { m_Data.push_back(1); m_Data.push_back(2); m_Data.push_back(3); } template<class Item> Iterator<Item>* ConcreteAggregate<Item>::CreateIterator() { return new ConcreteIterator<Item>(this); } template<class Item> Item& ConcreteAggregate<Item>::operator[](int index) { return m_Data[index]; } template<class Item> int ConcreteAggregate<Item>::GetLen() { return m_Data.size(); } ////////////////////////////////////////////////////////////////////////// void IteratorPattern_Test() { Aggregate<int> * m_pAggr =new ConcreteAggregate<int>(); Iterator<int> *it=m_pAggr->CreateIterator(); for(it->First();!it->IsDone();it->Next()) { cout<<*(it->CurrentItem())<<endl; } delete it; delete m_pAggr; } }
1 2 3
- Diagram.zip (1.1 MB)
- 下载次数: 0
- IteratorPattern.zip (1.3 KB)
- 下载次数: 0
发表评论
-
FreeRTOS
2022-03-05 16:31 248Ref https://blog.csdn.net/weix ... -
串口通讯相关
2018-11-02 13:44 411https://bbs.csdn.net/wap/topics ... -
[转]C++验证IP是否可以PING通
2018-10-30 17:54 1325https://www.cnblogs.com/guoyz13 ... -
C++/MFC 換皮膚
2018-10-20 11:05 477https://blog.csdn.net/u01123991 ... -
WinCE 截屏 - C++ 代碼
2018-08-31 09:45 574// this function create a bmp ... -
Android NDK搭建環境
2017-11-27 13:25 580https://www.cnblogs.com/ut2016- ... -
8583协议相关
2017-10-17 13:38 5738583相关资料,整理中... -
Java高级应用之JNI
2017-06-19 09:00 600参考link http://www.cnblogs.com/l ... -
C++实现ping功能
2017-04-18 11:21 2155基础知识 ping的过程是向目的IP发送一个type=8的I ... -
OpenSSL 编译环境搭建
2017-03-27 15:01 9061 安裝VS2008到 c:\Program Files (x ... -
最优非对称加密填充(OAEP)
2017-03-25 14:53 1582OpenSSL命令---rsautl http://blog. ... -
[Platform Builder] 设置SVM OS build Env
2016-11-10 11:39 01 copy one OSDesign Project to ... -
[Windows] System Error Codes(GetLastError )0-----5999
2016-10-26 13:28 1881ERROR_SUCCESS 0 (0x0) T ... -
开源Windows驱动程序框架
2016-09-17 21:35 871转自 http://code.csdn.net/news/28 ... -
c/c++代码中执行cmd命令
2016-09-14 14:50 1908转自 http://blog.csdn.net/slixinx ... -
C#使用C++标准DLL实例(包含callback)
2016-09-11 19:44 1086C++编写标准Win32DLL如下 头文件 /***** ... -
C#调用C++的DLL搜集整理的所有数据类型转换方式
2016-09-09 16:07 969转自 http://www.cnblogs.com/zeroo ... -
WinCE CPU使用率计算 测试工具
2016-09-08 16:14 991转自 http://blog.csdn.net/jan ... -
switch在C++与C#中的一些差异
2016-09-08 15:19 810参考链接 http://blog.csdn.net/weiwe ... -
C++ 鼠标模拟程序
2016-09-04 12:09 1612转自 http://blog.csdn.net/weixinh ...
相关推荐
迭代器模式是软件设计模式中的一种行为模式,它在C++以及其他面向对象编程语言中有着广泛的应用。这个模式的主要目标是允许用户以一种统一的方式遍历聚合对象中的元素,而无需暴露聚合对象的内部结构。这增加了代码...
迭代器模式是一种设计模式,它在软件工程中扮演着重要的角色,特别是在处理集合或容器类对象的遍历操作时。这种模式提供了一种方法来顺序访问聚合...理解并熟练运用迭代器模式对于提升代码质量和可维护性具有重要意义。
迭代器模式是软件设计模式中的一种行为模式,它在C#等面向对象编程语言中有着广泛的应用。这个模式的主要目标是允许用户遍历一个聚合对象(如数组、集合或列表)的所有元素,而无需了解底层的实现细节。下面将详细...
迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以方便...
迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在“设计模式之迭代器模式(新)”中,我们将深入探讨这种模式的核心概念、实现方式以及它在实际编程中的应用...
迭代器模式是一种设计模式,属于行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象语言中,迭代器模式被广泛应用于容器类,如ArrayList、LinkedList等,使得我们可以...
迭代器模式是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java、C#等面向对象编程语言中,迭代器模式被广泛应用于集合类库,如ArrayList、LinkedList等。这个"迭代器模式demo...
迭代器模式(Iterator Pattern)是Java设计模式中的行为模式之一,它提供了一种方法来顺序访问聚合对象的元素,而又不暴露其底层表示。在Java中,迭代器模式被广泛应用于集合类,如ArrayList、LinkedList等,通过...
3. **迭代器模式**:迭代器模式是行为型设计模式,它允许我们遍历集合对象的元素而无需暴露其底层表示。迭代器模式提供了一种方法顺序访问聚合对象中的元素,而无需暴露其底层结构。在Java中,迭代器模式广泛应用于...
在实际开发中,虽然我们通常直接使用编程语言提供的迭代器类,但理解迭代器模式的工作原理有助于更好地利用这些工具,特别是在处理复杂数据结构或需要自定义遍历行为时。通过将遍历逻辑从集合类中分离,迭代器模式...
迭代器模式是一种行为设计模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式广泛应用于集合框架,如ArrayList、LinkedList等。本示例将深入探讨如何在Java中实现和使用迭代器...
迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在C#中,迭代器模式的应用非常广泛,尤其是在处理集合类库时。本教程将深入讲解如何在C#中实现迭代器模式。 ...
迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式广泛应用于集合框架,如List、Set和Map接口,使得程序员可以方便地遍历集合中的元素。 ...
迭代器模式是设计模式中的一种行为模式,它提供了一种顺序访问聚合对象的元素而无需暴露其底层表示的方法。在Android开发中,迭代器模式的应用可以帮助我们更好地管理和遍历集合数据,尤其在处理复杂的逻辑或者需要...
迭代器模式是一种行为设计模式,它提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式是通过接口和实现类来实现的,让我们深入探讨一下这个模式。 首先,我们要理解迭代器模式的...
迭代器模式是软件设计模式中的行为模式之一,它在C++编程中有着广泛的应用。这个模式提供了一种方法来顺序访问聚合对象的元素,而无需暴露其底层表示。通过迭代器,用户可以遍历集合中的所有元素,而无需知道如何...
迭代器模式是软件设计模式中的一种行为模式,它允许我们顺序访问聚合对象的元素,而无需暴露其底层表示。在Java中,迭代器模式广泛应用于集合框架,如List、Set和Map接口,提供了遍历元素的方法。让我们深入探讨这个...