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) 对于下列二叉查找树,使用迭 ...
随机推荐
- 修改Windows Server 2008+IIS 7+ASP.NET默认连接限制,支持海量并发连接数
WIN7中IIS7默认配置的服务器同时最多只能处理5000个请求,如果由于某些情况(程序问题等)造成同时请求超过5000时,将会导致服务器错误.为此,修改服务器的设置,从而支持10万个同时请求. 具体 ...
- Spring自定义缓存管理及配置Ehcache缓存
spring自带缓存.自建缓存管理器等都可解决项目部分性能问题.结合Ehcache后性能更优,使用也比较简单. 在进行Ehcache学习之前,最好对Spring自带的缓存管理有一个总体的认识. 这篇文 ...
- win32+ apache2.2 + tomcat7配置
首先已安装了apache2.2.22与tomcat7,并下载了相应的连接器文件mod_jk.so,存放于apache目录的modules下.我的电脑的安装路径如下:1.D:\server\Apache ...
- RabbitMQ(六)
集群 以两台机器为例: 10.10.43.207 10.10.244.244 分别安装好 rabbitmq,之后 1.修改集群机器 erlang 的 cookie 2.修改两台机器的 hosts 3. ...
- 增强VPS SSH账号安全:改端口,禁用Root,密钥登录,Denyhosts防暴力攻击
VPS SSH账号是我们日常管理VPS的主要登入方式,尤其是Root账号,对Linux系统安全至关重要.以前好多站长喜欢用Putty中文版,这实际是别人修改官方Putty汉化而来,这些软件被植入了后门 ...
- fgtyn
http://www.studiocleo.com/projects/ballettechnique/one_11.html
- php redis 安装篇(windows 7)
人人都说redis比memcached好,但是没有实际体验过,概念还是比较模糊,今天就先把redis安装好,后面的体验再分享,由于php已经有了很好的扩展库支持,所以redis安装非常方便,下面是wi ...
- UEFI+GPT引导实践篇(二):UEFI引导安装64位Win7/Win8
下文是在联想Y480笔记本上以UEFI方式启动安装Windows8的全过程,安装Windows7过程基本相同.注意,如果你的电脑硬盘是MBR分区结构,安装过程中将要删除硬盘上所有数据,请安装前备份硬盘 ...
- oracle中having的用法
having的用法,having一般是用在group的后面,用在前面查询结果相同,但是语法上不通顺.答:having是对行组进行过滤.一般是先用where 过滤返回行,用group by 对过滤后的行 ...
- CString std::string相互转换
CString->std::string 例子: CString strMfc=“test“; std::string strStl; strStl=strMfc.GetBuffer(0); s ...