iterator和const iterator 和 const_iterator的区别
来源:互联网 发布:看钢铁侠2总出现数据库 编辑:程序博客网 时间:2024/05/21 15:42
众所周知,iterator就是一个灵活的迭代器,而const iterator 和 const_iterator是啥?接下来,我来讲讲:
const iterator(const迭代器)
const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。
vector<int> vec(10,9); const vector<int> :: iterator iter = vec.begin();
则,当程序中出现这样的语句时是错误的
++iter;
其原因是iter是一个常量,因此是不能改变的。换句话说,iter只能指向vec的第一个元素,不能指向其他的元素。
但是这样的语句是正确的:
*iter = 10;
因为虽然iter不能指向其他的元素,但是其指向的第一个元素的值是可以改变的。
**总结:**const iterator与const_iterator是不一样的:声明一个 const iterator时,必须初始化它。一旦被初始化后,只能用它来改它指的元素,不能使它重新指向其他元素。因此,const iterator几乎没任何用途。
const_iterator
而对于const_iterator来说的话,正好相反。比如我们这样定义
vector<int> vec(10,9); vector<int> :: const_iterator iter;
即定义了一个const_iterator迭代器。这个迭代器是可以自己增加的,但是其所指向的元素是不可以被改变的。比如说
for(iter = vec.begin(); iter != vec.end(); ++iter){ cout << *iter << endl; }
这样是正确的,即iter本身的值是可以改变的。但是
for(iter = vec.begin(); iter != vec.end(); ++ iter){ *iter = 0; }
这样是不对的,因为const_iterator迭代器是不能改变其所指向的元素的值的。
总结: const_iterator经常用于定义一个迭代器,挺有用的:
vector<int>::iterator iter=nums.begin();//或vector<int>::const_iterator iter=nums.begin();//或vector<int>::const_iterator iter=nums.cbegin();
上面三种写法都OK,这说明啥?
begin()和end()的类型由定义决定,cbegin()和cend()的类型始终为const_iterator;如果使用cbegin()则必须使用const_iterator。
最后的总结:
const iterator几乎没用,忽略即可。iterator和const_iterator的作用:遍历容器内的元素,并访问这些元素的值。iterator可改自身和所指的元素值,但const_iterator可改自身但不可改所指的元素值(只读的感觉)。
- const iterator ,iterator 和const_iterator的区别
- iterator、const_iterator和const iterator的区别
- const_iterator, iterator和const iterator的区别
- const iterator 和const_iterator区别
- const_iterator和const iterator的区别
- const iterator 和 const_iterator 的区别
- const iterator和const_iterator的区别
- iterator和const iterator 和 const_iterator的区别
- const_iterator 和 const..iterator
- const iterator和const_iterator
- c++ 中 const_iterator 和 const vector<>::iterator的区别
- c++ 中 const_iterator 和 const vector<>::iterator的区别
- const vector<int>::iterator和vector<int>::const_iterator的区别
- iterator,const_iterator,const iterator区别
- const_iterator与const的iterator的区别
- const iterator 与const_iterator的区别
- const_iterator与const iterator区别
- iterator与const_iterator及const iterator区别
- 学习笔记(一)——图像的灰度级和动态范围
- 我的书单导航
- 随便写写
- C#实验解答(4)
- 从零开书学算法(导论)之插入排序
- iterator和const iterator 和 const_iterator的区别
- @font-face中#iefix的详解
- 二分查找
- BZOJ 1854: [Scoi2010]游戏 【二分图】【并查集】
- python 接口自动化测试--代码实现(八)
- 欢迎使用CSDN-markdown编辑器-自带的语法讲解
- CentOS7上搭建FTP服务+VSFTPD配置全解析
- 大小写字符的转换
- Java 泛型,了解这些就够用了。