C++ ------ const迭代器 和 const_iterator的区别
const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。
vector<int> vv(,);
const vector<int> :: iterator iter = vv.begin();
则,当程序中出现如下的语句时是错误的
++iter;
其原因是iter是一个常量,因此是不能改变的。换句话说,iter只能指向vv的地一个元素,不能指向其他的元素。
但是这样的语句是正确的:
*iter = ;
因为虽然iter不能指向其他的元素,但是其指向的第一个元素的值是可以改变的。
而对于const_iterator来说的话,正好相反。比如我们这样定义
vector<int> vv(,);
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 = ;
}
这样是不对的,因为const_iterator迭代器是不能改变其所指向的元素的值的。
C++ ------ const迭代器 和 const_iterator的区别的更多相关文章
- const 迭代器和 const_iterator (vector/set/map)
vector: 如同一般复合类型一样,vector 迭代器也可以声明成: const vector<int>::iterator it1 = v.begin(); vector<in ...
- VC++ 迭代器 iterator, const_iterator, const iterator
迭代器 iterator, const_iterator, const iterator 迭代器iterator的作用类似于指针. (1)iterator只有针对制定<类型>的容器才有效. ...
- JavaScript中const、var和let区别浅析
在JavaScript中有三种声明变量的方式:var.let.const.下文给大家介绍js中三种定义变量的方式const, var, let的区别. 1.const定义的变量不可以修改,而且必须初始 ...
- 实例讲述PHP面向对象的特性;;;php中const与define的使用区别
php中const与define的使用区别 1.const:类成员变量定义,一旦定义且不能改变其值. define:定义全局常量,在任何地方都可以访问.2.define:不能在类中定义,而const可 ...
- const 在C++中的区别
一.Const作用 如下表所示: No. 作用 说明 参考代码 1 可以定义const常量 const int Max = 100; 2 便于进行类型检查 const常量有数据类型,而宏常量没有 ...
- const不同位置带来的区别
const不同位置带来的区别 今天同学问我数据结构时,我对以下代码懵了一下: template <class T> class Link{ public: T data; Link< ...
- const放在函数前后的区别
转载:const放在函数前后的区别 一.const修饰指针 int b = 500; 1.const int * a = & b; 2.int const * a = & b; 3.i ...
- PHP 中 define() 和 const 定义常量时的区别
自 PHP 5.3.0 起,有两种方式定义常量,使用 const 关键字或者 define() 函数: 1 2 const FOO = 'BAR'; define('FOO', 'BAR'); 这 ...
- const define 定义常量的区别
1.用const定义常量在编译的时候,提供了类型安全检查,而define 只是简单地进行字符串的替换 2.const定义的常量,会分配相应的内存空间.而define没有分配空间,只是在程序中与处理的时 ...
随机推荐
- Spring @Value注入值失败,错误信息提示:Could not resolve placeholder
问题根源: @Value("${wx.app.config.appid}") public Object appid; 异常信息: Caused by: java.lang.Ill ...
- 列表生成式+过滤器(filter)+映射(map)+lambda总结
这些都是python的特色,不仅强大,而且好用,配合起来使用更是无敌. 零.lambda lambda用于产生一个匿名表达式,组成部分为:lambda + ‘函数表达式’ ‘函数表达式’由一个冒号加上 ...
- 汇编 if else
知识点: if else 逆向还原代码 一.了解if else结构 sub esp, |. 8B45 FC MOV EAX,DWORD PTR SS:[EBP-] 0040102C |. 3B45 ...
- 洛咕 P2336 [SCOI2012]喵星球上的点名
洛咕 P2336 [SCOI2012]喵星球上的点名 先求出SA和height,一个点名串对应的就是一段区间,还有很多个点,就转化成了 有很多个区间,很多个点集,对每个区间计算和多少个点集有交,对每个 ...
- JAVA 静态方法和实例方法的区别 (图表)
静态方法和实例方法的区别主要体现在两个方面: 在外部调用静态方法时,可以使用"类名.方法名"的方式,也可以使用"对象名.方法名"的方式.而实例方法只有后面这 ...
- async await使用
promise使用 var sleep = function (time) { return new Promise(function (resolve, reject) { setTimeout(f ...
- [SHOI2012]随机树[期望dp]
题意 初始 \(1\) 个节点,每次选定一个叶子节点并加入两个儿子直到叶子总数为 \(n\),问叶子节点深度和的平均值的期望以及最大叶子深度的期望. \(n\leq 100\) . 分析 对于第一问, ...
- Asp.Net_的传值跟存储值操作
页面传值是学习asp.net初期都会面临的一个问题,总的来说有页面传值.存储对象传值.ajax.类.model.表单等.但是一般来说,常用的较简单有QueryString,Session,Cookie ...
- CSS 背景实例
CSS 背景属性属性 描述background 简写属性,作用是将背景属性设置在一个声明中.background-attachment 背景图像是否固定或者随着页面的其余部分滚动.background ...
- docker 学习笔记(2)--doucker file命令
FROM base ---- imageRUN ---- 执行命令ADD ---- 添加文件COPY ---- 拷贝文件CMD ...