每个标准容器类都提供四种迭代器类型,对于container<T>而言:

1     iterator            // 的作用相当于T*,
2     const_iterator        // 相当于 const T*(也可 T const*)
3     reverse_iterator      // 相当于 T*
4     const_reverse_iterator  // 相当于 const T*

有些方法只接受 iterator 类型的参数

1   iterator insert( iterator position, const T& x );
2   iterator erase ( iterator position );
3   iterator erase ( iterator rangeBegin, iterator rangeEnd );

图片显示了从iterator到const_iterator、从iterator到reverse_iterator和从reverse_iterator到const_reverse_iterator可以进行隐式转换。

reverse_iterator 可以通过调用 base 成员函数转换为 iterator

const_reverse_iterator 可以通过 base 成员函数转换为 const_iterator

但是 const_iterator 转换得到一个 iterator,也无法从 const_reverse_iterator 得到 reverse_iterator

尽量使用 iterator 取代 const 或者 reverse 类型的迭代器:

1. insert 和 erase 的一些版本要求 iterator,如果调用这些函数就必须产生 iterator

2. 不可能把 const_iterator 隐式转换成 iterator

3. 从 reverse_iterator 转换而来的 iterator 在转换之后可能需要相应的调整

所以尽量使用 iterator 代替 const 或 reverse 类型的迭代器,可以使容器的使用更简单,更高效

转载于:https://www.cnblogs.com/kidycharon/p/10033060.html

Effective_STL 学习笔记(二十六) 尽量使用 iterator 代替 const_iterator,reverse_iterator和const_reverse_iterator...相关推荐

  1. JVM 学习笔记二十六、JVM监控及诊断工具-GUI篇

    二十六.JVM监控及诊断工具-GUI篇 1.工具概述 使用上一张命令行工具或组合能帮您获取目标Java应用性能相关的基础信息,但他们存在下列局限: (1)无法获取方法级别的分析数据,如方法间的调用关系 ...

  2. Jenkins 持续集成 概念(学习笔记二十六)

    持续集成:提交.测试.构建.测试.部署 前不久接触了持续集成(Continuous Integration,CI). 一.持续集成是什么 首先说说"集成"的概念.在实际的软件开发中 ...

  3. 立创eda学习笔记二十六:手把手教你使用立创eda的官方教程

    可以通过以下办法找到教程: 1,在软件界面点帮助-使用教程 2,在网站首页-帮助-教程进入 如何使用教程: 这里是一级目录,其实对新手最有用的是前面3个部分,后面的仿真先不看. 常见问题里面不光是讲的 ...

  4. [傅里叶变换及其应用学习笔记] 二十六. 高维傅里叶变换的推导

    高维意味着函数中有多个变量,典型的高维傅里叶应用为图像处理. 一个二维图像的亮度(灰度)可以用$f(x_1,x_2)$来表示,以lena为例,图像平面作为$x_1,x_2$平面,灰度作为$z$轴,形成 ...

  5. Java学习笔记二十六:Java多态中的引用类型转换

    Java多态中的引用类型转换 引用类型转换: 1.向上类型转换(隐式/自动类型转换),是小类型到大类型的转换: 2.向下类型转换(强制类型转换),是大类型到小类型的转换: 3.instanceof运算 ...

  6. OpenCV学习笔记(十六)——CamShift研究 OpenCV学习笔记(十七)——运动分析和物体跟踪Video OpenCV学习笔记(十八)——图像的各种变换(cvtColor*+)imgproc

    OpenCV学习笔记(十六)--CamShift研究 CamShitf算法,即Continuously Apative Mean-Shift算法,基本思想就是对视频图像的多帧进行MeanShift运算 ...

  7. python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  8. python分析鸢尾花数据_python数据挖掘学习笔记】十六.逻辑回归LogisticRegression分析鸢尾花数据...

    但是很多时候数据是非线性的,所以这篇文章主要讲述逻辑回归及Sklearn机器学习包中的LogisticRegression算法 #2018-03-28 16:57:56 March Wednesday ...

  9. OpenCV学习笔记(十六):直方图均衡化:equalizeHist()

    OpenCV学习笔记(十六):直方图均匀化:equalizeHist() 参考博客: 直方图均衡化的数学原理 直方图匹配的数学原理 直方图均衡化广泛应用于图像增强中: 直方图均衡化处理的"中 ...

  10. QT学习笔记(十六):setwindowflags的属性总结

    QT学习笔记(十六):setwindowflags的属性总结 此枚举类型用于为小部件指定各种窗口系统属性.它们是不常用的,但在一些情况下是必要的.其中一些标志取决于底层窗口管理器是否支持它们. 主要类 ...

最新文章

  1. LTE MIB 的发送周期
  2. MySQL全面优化,速度飞起来
  3. Linux通过XAMPP集成软件包搭建LAMPP环境
  4. openssl生成rsa密钥对和密钥格式转换
  5. 平衡不完全区组设计 数据分析的SAS实践
  6. 英特尔高级副总裁:收购McAfee是为股东考虑
  7. Leetcode232使用栈实现队列
  8. 重置忘记的mysql root密码
  9. python狗狗年龄换算_Python之美——一只数据狗的笔记[长期更新]
  10. Socket模型详解
  11. 疫情之下的“催化剂”:在线经济崛起 房产数字化变革加速
  12. 【吴恩达机器学习】学习笔记——4多元线性回归
  13. beego mysql增删改查_5-BeegoORM增删改查-Go语言中文社区
  14. talib python文档_TALib中文文档代码实现
  15. 视频解码测试软件,视频解码:视频解码性能测试_平板电脑评测-中关村在线
  16. 【电源模块】TPS54331 DCDC降压芯片设计
  17. 达梦数据库基础优化分享
  18. C++ 表达式必须含有常量值变量
  19. 个人项目-20组刘鼎事后诸葛亮会议
  20. 安装双系统/误删导致原来的引导分区中的boot丢失的解决方案

热门文章

  1. 计算机二级基础知识微盘,计算机二级C++基础知识(整理版).pdf
  2. mysql报错01427_ORA-01427问题的分析和解决
  3. vscode禁用 json 添加注释时的报错
  4. sha 2 java加密_java中的SHA2密码哈希
  5. gensim提取一个句子的关键词_NLP(五):关键词提取补充(语料库和向量空间)...
  6. spark structured stream的Update模式
  7. VB 更换设置桌面背景图片函数
  8. 数据库主从延迟导致查询不准确的解决思路
  9. 30多门免费课程上线,亚马逊“机器学习大学”开学了
  10. 大咖来信 | 轮值董事长徐直军,复盘华为AI战略出台始末