iterator,const_iterator,const iterator区别

论坛 期权论坛 编程之家     
选择匿名的用户   2021-6-2 20:58   2054   0

学习c++迭代器的时候,总是发现以上这这3种用法,一直也不知道有什么区别

查阅多篇资料,终于明白这几个的区别了,然各个资料不尽齐全,借此文总结,分享给大家

以上3种用法区别见下文代码


 //ivec三种迭代器操作
 vector<int> ivec;
 int j = 100;

 //ivec初始化
 for (int i = 0; i < 10; i++){
  ivec.push_back(i);
 }

 //iterator操作ivec,可以修改其值和迭代器可以自增
 for (vector<int>::iterator iter = ivec.begin(); iter != ivec.end(); ){
  *iter = j--;//ok
  iter++;//ok
 }
 //const_iterator操作ivec,不能修改ivec的值,能对vector进行遍历,迭代器可自增
 for (vector<int>::const_iterator iter = ivec.begin(); iter != ivec.end();){
  *iter = j--;//error;*iter is const
  iter++;//OK
 }
 //const  iterator 操作ivec,可以修改ivec的值,但不能改变迭代器
 //此种用法不宜写在for循环里,因为迭代器是为了遍历vector,但这里迭代器被设置为const,故迭代器无法移动,所以不宜写在for里
 for (const vector<int>::iterator iter = ivec.begin(); iter != ivec.end();){
  *iter = j--;//ok
  iter++;//error;iter is const
 }



总结上文得出,三种用法各自适用的地方

1、iterator 适用于要改变多个vector的值

2、const_iterator 适用于仅对vector进行遍历,不改变vector的值

3、const iterator 这个是固定迭代器,仅仅操作这一个值(目前还没发现有什么用途,欢迎博友指正。。嘿嘿)


分享到 :
0 人收藏
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

积分:3875789
帖子:775174
精华:0
期权论坛 期权论坛
发布
内容

下载期权论坛手机APP