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