指针和迭代器的区别:

迭代器:
      (1)迭代器不是指针,是类模板,表现的像指针。他只是模拟了指针的一些功能,通过重载了指针的一些操作符,->,*,++ --等封装了指针,是一个“可遍历STL( Standard Template Library)容器内全部或部分元素”的对象, 本质是封装了原生指针,是指针概念的一种提升(lift),提供了比指针更高级的行为,相当于一种智能指针,他可以根据不同类型的数据结构来实现不同的++,--等操作;
      (2)迭代器返回的是对象引用而不是对象的值,所以cout只能输出迭代器使用*取值后的值而不能直接输出其自身。
      (3)在设计模式中有一种模式叫迭代器模式,简单来说就是提供一种方法,在不需要暴露某个容器的内部表现形式情况下,使之能依次访问该容器中的各个元素,这种设计思维在STL中得到了广泛的应用,是STL的关键所在,通过迭代器,容器和算法可以有机的粘合在一起,只要对算法给予不同的迭代器,就可以对不同容器进行相同的操作。

(4)在用迭代器执行erase,insert等函数时,迭代器的指针会被释放掉,从而不能继续使用,如果继续使用,则会报错;

指针:
        指针能指向函数而迭代器不行,迭代器只能指向容器;指针是迭代器的一种。指针只能用于某些特定的容器;迭代器是指针的抽象和泛化。所以,指针满足迭代器的一切要求。
        总之,指针和迭代器是有很大差别的,虽然他们表现的行为相似,但是本质是不一样的!一个是类模板,一个是存放一个家伙的地址的指针变量。

C++迭代器使用错误总结相关推荐

  1. 完全理解Python迭代对象、迭代器、生成器

    本文源自RQ作者的一篇博文,原文是Iterables vs. Iterators vs. Generators,俺写的这篇文章是按照自己的理解做的参考翻译,算不上是原文的中译版本,推荐阅读原文,谢谢网 ...

  2. 2021年大数据常用语言Scala(十九):基础语法学习 iterator迭代器

    目录 iterator迭代器 使用迭代器遍历集合 iterator迭代器 scala针对每一类集合都提供了一个迭代器(iterator)用来迭代访问集合 使用迭代器遍历集合 使用iterator方法可 ...

  3. python3 内置函数map 返回的迭代器转为列表

    python3 内置函数map 返回的是迭代器,python2 返回的才是列表, 在python3中想要使用需要把迭代器在转换成列表 list_a = [1, 2, 3, 4, 5]def add(n ...

  4. 生成器、迭代器的区别?

    迭代器是一个更抽象的概念,任何对象,如果它的类有 next 方法和 iter 方法返回自己本身,对于 string.list. dict.tuple 等这类容器对象,使用 for 循环遍历是很方便的. ...

  5. python基础(迭代器,生成器,装饰器)

    python: 生成器: 因为当列表元素达到一定上限,列表会占很大内存空间来存储,所以列表是受到内存限制的来适当使用. 生成器可以按照一个算法,循环推导出元素,就不用一次生成整个列表,而通过生成器(g ...

  6. C++ 笔记(19)— 标准模板库(STL容器、STL迭代器、STL算法、STL容器特点、STL字符串类)

    C++ 标准库可以分为两部分: 标准函数库: 这个库是由通用的.独立的.不属于任何类的函数组成的.函数库继承自 C 语言. 面向对象类库: 这个库是类及其相关函数的集合. C++ 标准库包含了所有的 ...

  7. Python 列表和迭代器区别

    列表不论遍历多少次,表头位置始终是第一个元素: 迭代器遍历结束后,不再指向原来的表头位置,而是为最后元素的下一个位置. 通过 type 关键字可以看到列表和迭代器的类型是不同的. In [1]: a ...

  8. Python 高阶函数filter、map、reduce、reversed、sorted及迭代器函数 iter

    1. filter(function, iterable) 过滤器,过滤掉不满足函数 function 的元素,重新返回一个新的迭代器. 其中 function 函数的第一个参数是可迭代对象 iter ...

  9. iter迭代器的应用

    迭代器是访问集合元素的一种方式.迭代器对象从集合的第一个元素开始访问,直到所有的元素被访问完结束. 用户不用关心迭代器的内部结构,仅需通过next方法不断去读取下一个内容 不能随机访问任意一个内容,只 ...

最新文章

  1. 我输给了一个 25 岁的男人
  2. 个人计算机中的cache,cache在计算机中的作用是什么?
  3. 使用 Firefox攻击Web2.0应用(二)
  4. windows下expdp自动备份脚本
  5. 支付宝和微信的支付流程图
  6. LeetCode 64最小路径和65有效数字66加一
  7. Linux上的Systemctl命令
  8. (小费马定理降幂)Sum
  9. 豪气十足!联想Z6 Pro法拉利定制版本首现
  10. python统计excel_Python操作excel做些统计
  11. POP3启用LDAP实现自动加载邮件通讯录的过程
  12. Unmapped Spring configuration files found.
  13. 十五、方差分析--使用Python进行单因素方差分析(ANOVA)
  14. 阿里云企业邮箱2019
  15. Qt之GIF录制工具
  16. 分布式存储技术及应用
  17. java创建万年历,维护节假日信息
  18. Mysql 知行必会 “子查询”
  19. 用java实现评委打分系统程序
  20. CentOS 7 安装 Oracle 11.2.0.4

热门文章

  1. 血淋淋的事实告诉你:你为什么不应该在JS文件中保存敏感信息
  2. WPF中通过AForge实现USB摄像头拍照
  3. Unity——用UnityEditor拷贝FBX中的AnimationClip
  4. 玩转MySQL之Linux下的简单操作(服务启动与关闭、启动与关闭、查看版本)
  5. 无线智能路由器家长控制宽带
  6. python闭包的应用场景_简单谈谈Python中的闭包
  7. 编译打包vue_Vue 源码分析( 一 )
  8. 波纹扩散_C4D_动画amp;RS波纹扩散效果J_014
  9. idea在分屏拖不回来_朋友圈赏花晒照新玩法,宫格分屏视频!
  10. vscode自动格式化不符合eslint_VsCode(Visual Studio Code)格式化代码符合EsLint