iterator迭代器详解_c++迭代器iterator

iterator迭代器详解_c++迭代器iterator迭代器 Iterator动机模式定义实例结构要点总结笔记动机在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象.我们希望在不暴露其内部结构地同时.可以让外部客户代码透明地访问其中包含地元素;同时这种”透明遍历”也为”同一种算法在多种集合对象上进行操作”提供了可能.使用面向对象技术将这种便利机制抽象为”迭代对象”为”应对变化中地集合对象”提供了一种优雅地方式模式定义提供了一种方法顺序访问一个聚合对象中地各个元素,而又不暴露(稳定)该对象地内部表示.实例结构要点总结迭代抽象

大家好,又见面了,我是你们的朋友全栈君。如果您正在找激活码,请点击查看最新教程,关注关注公众号 “全栈程序员社区” 获取激活教程,可能之前旧版本教程已经失效.最新Idea2022.1教程亲测有效,一键激活。

Jetbrains全系列IDE使用 1年只要46元 售后保障 童叟无欺

动机

在软件构建过程中,集合对象内部结构常常变化各异.但对于这些集合对象.我们希望在不暴露其内部结构地同时.可以让外部客户代码透明地访问其中包含地元素;同时这种”透明遍历”也为”同一种算法在多种集合对象上进行操作”提供了可能.

使用面向对象技术将这种便利机制抽象为”迭代对象”为”应对变化中地集合对象”提供了一种优雅地方式

模式定义

提供了一种方法顺序访问一个聚合对象中地各个元素,而又不暴露(稳定)该对象地内部表示.

实例

结构

在这里插入图片描述

要点总结

  • 迭代抽象:访问一个聚合对象的内部不需要了解他的具体实现细节
  • 迭代多态:为遍历不同的集合结构提供一个统一的接口.从而支持同样的算法在不通的集合结构上进行操作
  • 迭代器的健壮性考虑:遍历的同时更改迭代器所在的集合结构,会导致问题

笔记

  • 虚函数也有成本
  • 模板也是一种多态技术 但是模板是编译时多态 编译器在编译的时候会辨别调用的那些代码
  • 由于时代变化 面向对象模板设计结构已经老了
  • 上述内容讲的是面向对象式的迭代器
  • C++98之后标准的迭代器式使用模板描述的
  • 其他语言好多有不支持编译时模板 所以好多语言java C#等都式用的面向对象迭代器
  • 思想都是通过迭代器来隔离算法和容器 但是实现的技术已经发生了变化
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/169031.html原文链接:https://javaforall.net

(0)
全栈程序员-站长的头像全栈程序员-站长


相关推荐

  • tomcat无法启动程序 Error filterStart

    tomcat无法启动程序 Error filterStart有时在启动tomcat时,有的应该程序无法启动,tomcat报错信息如下:org.apache.catalina.core.StandardContextstartSEVERE:ErrorfilterStartorg.apache.catalina.core.StandardContextstartSEVERE:Contextstartupfaileddueto…

    2022年7月11日
    15
  • IT公司速查手册–IT公司红黑榜

    IT公司速查手册–IT公司红黑榜IT公司速查手册–IT公司红黑榜http://www.bewww.net/index.html今天看到bewww.net原来有红黑榜,好像以前上去的时候还没有这个的。找工作的兄弟们要多留个心眼了,可疑的公司要先上网上查下,防止受骗~~~~黑榜上有不少挺熟悉的公司,好像我还投过简历的也有~~~ 

    2022年7月16日
    14
  • 程序员基本法则_程序员知识

    程序员基本法则_程序员知识DRY(不要重复你自己) 可读性第一,性能第二 低耦合、高内聚 童子军军规(让营地比你来的时候更干净)

    2022年9月1日
    6
  • JDK卸载与重装「建议收藏」

    JDK卸载与重装「建议收藏」JDK卸载与重装前言彻底卸载JDK这样新的jdk就安装完成了前言发现网上很多博文并没有完整的讲述如何卸载和重装jdk,自己在重装jdk的时候遇到很多问题,搜索很多博文,把内容整合起来,才解决问题,而且还有许多安装jdk,还要配置classpath环境变量,在jdk1.5版本之后已经不需要配置。本篇博文详细记录重装jdk的过程。彻底卸载JDK第一步:卸载原先的JDK(1)用控制面板卸载(2)安全类软件(360等)自带的软件卸载工具的功能卸载(3)直接删除jDK文件夹第二步:删除注册表

    2022年6月26日
    37
  • VMM基础_MTM方法

    VMM基础_MTM方法复杂度3/5机密度3/5最后更新2021/04/20VMMVirtualMemoryManagement是所有操作系统都要解决的问题,也是非常硬件相关的问题,必须从硬件CPU的地址管理开始谈起。

    2022年9月22日
    2
  • 精解reaver用BT5成功PIN解码

    精解reaver用BT5成功PIN解码精解reaver用BT5成功PIN解码 (2012-09-2014:06:23)转载▼标签: reaver bt5 pin wireless linux分类: LinuxPIN码破密特点:1、不需要客户端2、有PIN码就能获得无线密码3、八位数PIN码实际只

    2022年5月22日
    34

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号