C++中const迭代器 和 const_iterator的区别
话说这两个区别非常大,但是不太好理解啊,而且感觉解释也是各种绕口。说一下我自己的理解吧。
const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。
- vector<int> vv(10,9);
- const vector<int> :: iterator iter = vv.begin();
则,当程序中出现这样的语句时是错误的
- ++iter;
其原因是iter是一个常量,因此是不能改变的。换句话说,iter只能指向vv的地一个元素,不能指向其他的元素。
但是这样的语句是正确的:
- ×iter = 10;
因为虽然iter不能指向其他的元素,但是其指向的第一个元素的值是可以改变的。
而对于const_iterator来说的话,正好相反。比如我们这样定义
- vector<int> vv(10,9);
- vector<int> :: const_iterator iter;
即定义了一个const_iterator迭代器。这个迭代器是可以自己增加的,但是其所指向的元素是不可以被改变的。比如说
- for(iter = vv.begin(); iter != vv.end(); ++iter){
- cout << *iter << endl;
- }
这样是正确的,即iter本身的值是可以改变的。但是
- for(iter = vv.begin(); iter != vv.end(); ++ iter){
- *iter = 0;
- }
这样是不对的,因为const_iterator迭代器是不能改变其所指向的元素的值的。
C++中const迭代器 和 const_iterator的区别相关推荐
- const iterator 和const_iterator的区别
这是个困扰我很久了的问题,可能一开始对面向对象的理解不够深. 刚刚想明白了,随手记录一下. 先从const iterator和const_iterator说起 const iterator 是iter ...
- C#中const和readonly有什么区别?
C#中const和readonly什么区别? 您什么时候可以使用另一个? #1楼 常量成员是在编译时定义的,不能在运行时更改. 使用const关键字将const声明为字段,并且必须在声明const对其 ...
- C#中const和static readonly 的区别
我们都知道,const和static readonly的确很像:通过类名而不是对象名进行访问,在程序中只读等等.在多数情况下可以混用. 二者本质的区别在于,const的值是在编译期间确定的,因此只能在 ...
- c# 中const 和 static readonly 的区别
C# 在处理const关键字的时候,直接嵌入值来进行编译. 而在处理readonly关键字的时候,是动态引用的. 转载于:https://www.cnblogs.com/suneryong/archi ...
- php 中const define,PHP 中 const define 的区别
在php中定义常量时,可用到const与define这两种方法,那他们到底有什么区别呢? 1.const用于类成员变量的定义,一经定义,不可修改.define不可用于类成员变量的定义,可用于全局常量. ...
- java post和put的区别,ES 中的 POST 和 PUT 的区别
0.什么是Restful架构 比较难说清楚,这部分大雾状态,引ruanyf 理解RESTful架构 的几句总结吧: Fielding将他对互联网软件的架构原则,定名为REST,即Representat ...
- python yield用法_Python中迭代器和生成器的区别?
公众号新增加了一个栏目,就是每天给大家解答一道Python常见的面试题,反正每天不贪多,一天一题,正好合适,只希望这个面试栏目,给那些正在准备面试的同学,提供一点点帮助! 小猿会从最基础的面试题开始, ...
- python有关迭代器和生成器的面试题_【面试题 | Python中迭代器和生成器的区别?】- 环球网校...
[摘要]今天给大家解答一道Python常见的面试题,希望这个面试栏目,给那些准备面试的同学,提供一点点帮助!小编会从最基础的面试题开始,每天一题.如果参考答案不够好,或者有错误的话,麻烦大家可以在留言 ...
- C++ 中 const和define的区别
来源网址:http://wujiangping.blog.163.com/blog/static/195182011201255115125205/ 请区别用#define命令定义的符号常量和用con ...
最新文章
- firewall防火墙
- numpy基础(part8)--符号数组与矢量化
- vi/vim 三种模式及命令 (简单粗暴,轻松搞懂)
- 27岁华裔小伙搞出美国新冠最准预测模型,一人干翻专业机构,彭博:Superstar...
- 7-174 两个有序链表序列的合并 (20 分)
- java jobdetail_spring+quartz定时任务配置---JobDetailBean
- rms归一化_【AutoML】归一化(Normalization)方法如何进行自动学习和配置
- Go语言URL编码方案
- 清除chrome浏览器缓存
- jq遍历子元素_jQuery 遍历子元素 遍历所有子元素
- 商汤科技2020笔试题
- 原生js实现简易的可旋转伸缩连线效果代码
- source insight使用方法简介
- 对应分析图解读的七种方法
- UOS系统适配-常用开发工具安装
- 华为路由器配置命令汇总
- Android简易计算器的制作
- c++ 求int数组的长度
- Druid监控页面的配置和使用
- Azureus Vuze v5.7.2.0官方中文版
热门文章
- html5多大场景,HTML5新标签解释及其使用场景
- [PHP] MIME邮件协议的multipart类型
- 读书(附电子书)|小狗钱钱之白色的拉布拉多
- 【转载】15分钟搭建Linux操作系统+Oracle数据库的环境
- Spark MLlib回归算法------线性回归、逻辑回归、SVM和ALS
- loadrunner-3-3场景计划方式与运行模式
- makefile:2: *** 遗漏分隔符 。 停止
- Fedora 17 PHP编程环境配置
- 链路聚合-CISCO
- (转载)用oracle触发器对记录表增加记录的问题