加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 教程 > 正文

C++中const迭代器 和 const_iterator的差异

发布时间:2021-11-22 11:46:36 所属栏目:教程 来源:互联网
导读:话说这两个区别非常大,但是不太好理解啊,而且感觉解释也是各种绕口。说一下我自己的理解吧。 const迭代器,顾名思义,就是不能改变的迭代器,是常量,其性质是由const决定的。比如说我们这样定义一个const迭代器。 vectorint vv(10,9); const vectorint ::

话说这两个区别非常大,但是不太好理解啊,而且感觉解释也是各种绕口。说一下我自己的理解吧。
 
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迭代器是不能改变其所指向的元素的值的。
 
linux

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读