一. 举例说明

我们知道,在 STL 里提供 Iterator 来遍历 Vector 或者 List 数据结构。

Iterator 模式也正是用来解决对一个聚合对象的遍历问题,将对聚合的遍历封装到一个类中进行,这样就避免暴露这个聚合对象的内部表示的可能。

例如在 STL 里有如相下结构:

二. 迭代器模式

定义:提供一种方法顺序访问一个聚合对象中各个元素,而又不暴露该对象的内部表示

比较经典的例子是 STL 里的 for_each 操作

    1. // function called for each element
    2. void print (int elem)
    3. {
    4. cout << elem << ' ';
    5. }
    6. int main()
    7. {
    8. vector<int> coll;
    9. INSERT_ELEMENTS(coll,1,9);
    10. // for_each 对每个 elem 将调用 print(elem)
    11. for_each (coll.begin(), coll.end(),  // range
    12. print);                    // operation
    13. cout << endl;
    14. }

最新文章

  1. linux下libevent安装
  2. discuz核心函数库function_core的函数注释
  3. mysql 优化analyze table
  4. git 备份和恢复
  5. X86(32位)与X64(64位)有什么区别,如何选择对应的操作系统和应用程序?
  6. MapReduce流程、如何统计任务数目以及Partitioner
  7. javascript操作json总结
  8. Swift - 做一个简单的无线U盘(手机端Http服务器搭建)
  9. 计算机存储负数以及int转byte时-128的出现
  10. android中的五大布局(控件的容器,可以放button等控件)
  11. solr的域
  12. fastadmin模态框(弹出框)
  13. HTTP请求协议
  14. SELinux入门简介
  15. Maven学习笔记1(clean compile package install)
  16. SAP 销售条件表增强栏位
  17. dfs序理解-hdu3887
  18. hdu 1.2.5
  19. PyTorch保存模型与加载模型+Finetune预训练模型使用
  20. 转载:C/C++关于string.h头文件和string类

热门文章

  1. mysql创建数据库指定字符集和校对规则
  2. Ubuntu使用vi命令时,不能正常编辑文件,使用方向键时老是出现很多字母解决方案
  3. RocketMQ初入门踩坑记
  4. php一行代码获取本周一,本周日,上周一,上周日,本月一日,本月最后一日,上月一日,上月最后一日日期
  5. uC/OS-III 任务详解(四)
  6. vultr恢复快照后更改密码(CentOs7)
  7. springcloud --- spring cloud sleuth和zipkin日志管理(spring boot 2.18)
  8. [LeetCode] 1137. N-th Tribonacci Number
  9. Linux下格式化恢复USB启动优盘
  10. java中的char