VC++ 迭代器 iterator, const_iterator, const iterator
迭代器 iterator, const_iterator, const iterator
迭代器iterator的作用类似于指针。
(1)iterator只有针对制定<类型>的容器才有效。例如:
vector<int> vec; vector<int>::iterator itr;
对于vec来说,itr.begin()指向的是vec的第一个元素。Itr.end()指向的是vec的最后一个元素的下一个元素(作为哨兵,实际不存在)。可用itr.begin() == itr.end()来判断容器是否为空。
像指针一样,itr可以++,*itr表示解引用,即表示容器内被itr指向的元素。
(2)const_iterator为一种迭代器,这种迭代器可以读取其指向的内容,也可以自增,但是不可以对其指向的内容进行“写“操作。
例如:
vector<int>::const_iterator constItr = vec.begin(); cout<< *constItr << endl; //正确 constItr++;//正确 *constItr = ;//错误!
另外,由于const_iterator只可读取其指向的内容,所以可以用const_iterator作为const 的 容器的迭代器。
(3)容易混淆的 由const 修饰符修饰的iterator
其几乎无作用。
与普通的iterator一样,其可以解引用,并可以修改其指向的内容。但迭代器本身不可被修改,因为它由const修饰。
所以该iterator不能自增,其只能为第一次赋予的值,故并无明显的作用。
P.S:合法的指针运算:
- 相同类型指针之间的赋值运算
- 指针同整数之间的加减法运算
- 相同类型指针之间的减法和比较运算
- 将指针赋值为0 或 指针与0之间的比较运算
VC++ 迭代器 iterator, const_iterator, const iterator的更多相关文章
- iterator与const_iterator及const iterator区别
如果你传递过来一个const类型的容器,那么只能用const_iterator来遍历. C++ Code 12345 void Method(const vector<int> v ...
- const 迭代器和 const_iterator (vector/set/map)
vector: 如同一般复合类型一样,vector 迭代器也可以声明成: const vector<int>::iterator it1 = v.begin(); vector<in ...
- :迭代器模式1:Iterator
//今天一口气把这一章前半部分的iterator例子的所有代码写完,涉及到了不少指针的内容,竟然一次性编译通过.... //Iterator与Menu之间应该不是has a的关系,先这样着吧. #if ...
- 迭代器类型:iterator & const_iterator
vector<int> ivec{1, 3, 4, 1, 3, 4}; vector<int>::iterator iter; // iter能读写vector<int& ...
- C++ ------ const迭代器 和 const_iterator的区别
const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的.比如说我们这样定义一个const迭代器. vector<,); const vector<int> ...
- [Swift]LeetCode173. 二叉搜索树迭代器 | Binary Search Tree Iterator
Implement an iterator over a binary search tree (BST). Your iterator will be initialized with the ro ...
- [Swift]LeetCode341. 压平嵌套链表迭代器 | Flatten Nested List Iterator
Given a nested list of integers, implement an iterator to flatten it. Each element is either an inte ...
- C++泛型编程(1)--自己实现C++迭代器/遍历器 iterator
1.原理 迭代器又称为遍历器,用于访问容器中的数据,迭代器旨在算法和容器之间搭建访问的桥梁,从而使算法和数据分离,不用关心数据具体的存储细节.具体的原理描述请参考以下两个博客: [1].C++迭代器 ...
- 二叉查找树迭代器 · Binary Search Tree Iterator
[抄题]: 设计实现一个带有下列属性的二叉查找树的迭代器: 元素按照递增的顺序被访问(比如中序遍历) next()和hasNext()的询问操作要求均摊时间复杂度是O(1) 对于下列二叉查找树,使用迭 ...
随机推荐
- iscsi 怎么搞
I recently reinstalled the software on my NAS (open media vault) and tidied up the host name etc. As ...
- [Linux] 无法访问国外网站,完成epel源安装的解决办法--待续
一.缘由: 由于一个机房的网络限制,无法访问国外IP地址,在安装一些开源软件的时候比如smokeping.ansible就无法从epel源在线安装, 编译安装的话,又需要安装各种依赖,麻烦的一逼.所以 ...
- 利用SQL 建立和删除 LINKED SERVER
USE IS21_xxx; if object_id('tempdb..#tmp') is not null drop table #tmp create table #tmp ( cntr ), i ...
- TensorFlow中权重的随机初始化
一开始没看懂stddev是什么参数,找了一下,在tensorflow/python/ops里有random_ops,其中是这么写的: def random_normal(shape, mean=0.0 ...
- linux默认编辑器 sublime
开发人员把Vi improved简称Vim Vim编辑器再内存缓冲区中处理数据. 如果再启动Vim时未指定文件名,或者这个文件不存在,Vim会新开一段缓冲区域来编辑. 如果你再命令行下指定了一个已有文 ...
- 如何将win7变为wifi热点
以前经常使用connectify软件一键设置win7热点,但发现该软件影响开机速度,于是研究了一下win7自带的wifi功能,简单方便,分享如下: 1.打开命令提示符: [开始]/搜索框中输入“cmd ...
- Esfog_UnityShader教程_遮挡描边(原理篇)
咳咳,有段时间没有更新了,最近有点懒!把不少精力都放在C++身上了.闲言少叙,今天要讲的可和之前的几篇有所不同了,这次是一个次综合应用.这篇内容中与之前不同主要体现在下面几点上. 1.之前我们写的都是 ...
- (2016 年) githup 博客地址 : https://github.com/JMWY/MyBlog
githup 博客地址 : https://github.com/JMWY/MyBlog
- js访问xml
从w3school中获取代码 <html> <head> <script type="text/javascript"> var xmlhttp ...
- c 语言 运算符 优先级
C 语言 运算法优先级 从高 到 低 优先级 运算符 功能 适用范围 结合性 15 () [] . -> 括号 下标 存取成员 存取成员 表达式 数组 结构联合 结构联合 → (左→右) 14 ...