话说这两个区别非常大,但是不太好理解啊,而且感觉解释也是各种绕口。说一下我自己的理解吧。

const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。

[cpp] view plaincopy
  1. vector<int> vv(10,9);
  2. const vector<int> :: iterator iter = vv.begin();

则,当程序中出现这样的语句时是错误的

[cpp] view plaincopy
  1. ++iter;

其原因是iter是一个常量,因此是不能改变的。换句话说,iter只能指向vv的地一个元素,不能指向其他的元素。

但是这样的语句是正确的:

[cpp] view plaincopy
  1. ×iter = 10;

因为虽然iter不能指向其他的元素,但是其指向的第一个元素的值是可以改变的。

而对于const_iterator来说的话,正好相反。比如我们这样定义

[cpp] view plaincopy
  1. vector<int> vv(10,9);
  2. vector<int> :: const_iterator iter;

即定义了一个const_iterator迭代器。这个迭代器是可以自己增加的,但是其所指向的元素是不可以被改变的。比如说

[cpp] view plaincopy
  1. for(iter = vv.begin(); iter != vv.end(); ++iter){
  2. cout << *iter << endl;
  3. }

这样是正确的,即iter本身的值是可以改变的。但是

[cpp] view plaincopy
  1. for(iter = vv.begin(); iter != vv.end(); ++ iter){
  2. *iter = 0;
  3. }

这样是不对的,因为const_iterator迭代器是不能改变其所指向的元素的值的。

C++中const迭代器 和 const_iterator的区别相关推荐

  1. const iterator 和const_iterator的区别

    这是个困扰我很久了的问题,可能一开始对面向对象的理解不够深. 刚刚想明白了,随手记录一下. 先从const iterator和const_iterator说起 const iterator 是iter ...

  2. C#中const和readonly有什么区别?

    C#中const和readonly什么区别? 您什么时候可以使用另一个? #1楼 常量成员是在编译时定义的,不能在运行时更改. 使用const关键字将const声明为字段,并且必须在声明const对其 ...

  3. C#中const和static readonly 的区别

    我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等.在多数情况下可以混用. 二者本质的区别在于,const的值是在编译期间确定的,因此只能在 ...

  4. c# 中const 和 static readonly 的区别

    C# 在处理const关键字的时候,直接嵌入值来进行编译. 而在处理readonly关键字的时候,是动态引用的. 转载于:https://www.cnblogs.com/suneryong/archi ...

  5. php 中const define,PHP 中 const define 的区别

    在php中定义常量时,可用到const与define这两种方法,那他们到底有什么区别呢? 1.const用于类成员变量的定义,一经定义,不可修改.define不可用于类成员变量的定义,可用于全局常量. ...

  6. java post和put的区别,ES 中的 POST 和 PUT 的区别

    0.什么是Restful架构 比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧: Fielding将他对互联网软件的架构原则,定名为REST,即Representat ...

  7. python yield用法_Python中迭代器和生成器的区别?

    公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...

  8. python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...

    [摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...

  9. C++ 中 const和define的区别

    来源网址:http://wujiangping.blog.163.com/blog/static/195182011201255115125205/ 请区别用#define命令定义的符号常量和用con ...

最新文章

  1. firewall防火墙
  2. numpy基础(part8)--符号数组与矢量化
  3. vi/vim 三种模式及命令 (简单粗暴,轻松搞懂)
  4. 27岁华裔小伙搞出美国新冠最准预测模型,一人干翻专业机构,彭博:Superstar...
  5. 7-174 两个有序链表序列的合并 (20 分)
  6. java jobdetail_spring+quartz定时任务配置---JobDetailBean
  7. rms归一化_【AutoML】归一化(Normalization)方法如何进行自动学习和配置
  8. Go语言URL编码方案
  9. 清除chrome浏览器缓存
  10. jq遍历子元素_jQuery 遍历子元素 遍历所有子元素
  11. 商汤科技2020笔试题
  12. 原生js实现简易的可旋转伸缩连线效果代码
  13. source insight使用方法简介
  14. 对应分析图解读的七种方法
  15. UOS系统适配-常用开发工具安装
  16. 华为路由器配置命令汇总
  17. Android简易计算器的制作
  18. c++ 求int数组的长度
  19. Druid监控页面的配置和使用
  20. Azureus Vuze v5.7.2.0官方中文版

热门文章

  1. html5多大场景,HTML5新标签解释及其使用场景
  2. [PHP] MIME邮件协议的multipart类型
  3. 读书(附电子书)|小狗钱钱之白色的拉布拉多
  4. 【转载】15分钟搭建Linux操作系统+Oracle数据库的环境
  5. Spark MLlib回归算法------线性回归、逻辑回归、SVM和ALS
  6. loadrunner-3-3场景计划方式与运行模式
  7. makefile:2: *** 遗漏分隔符 。 停止
  8. Fedora 17 PHP编程环境配置
  9. 链路聚合-CISCO
  10. (转载)用oracle触发器对记录表增加记录的问题