iterator,const_iterator,const iterator区别

学习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   这个是固定迭代器,仅仅操作这一个值(目前还没发现有什么用途,欢迎博友指正。。嘿嘿)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值