1、概述
迭代器(iterator)是一种检查容器内元素并遍历元素的数据类型。
2、定义
1)容器的iterator类型
根据容器的类型定义迭代器
e.g.
vector<int>::iterator iter;
2)begin和end操作
用于返回迭代器。
- begin
返回的迭代器指向第一个元素
vector<int>::iterator iter=ivec.begin()
- end
返回的迭代器指向vector的“末端元素的下一个”,称为超出末端迭代器。指向了一个不存在的元素。
若容器为空,则begin和end返回的迭代器相同。
3)vector迭代器的自增
++iter;
把容器中的迭代器“向前移动一个位置”.
4)解引用运算
使用解引用操作符(*操作符)来访问迭代器指向的元素。
*iter=0;//将元素赋值为0
E.g利用迭代器编写循环
for(vector<int>::size_type ix=0;ix!=ivec.size();++ix;
ivec[ix]=0;
for(vetor<int>::iterator iter=ivec.begin();iter!=ievc.end();++iter;
*iter=0;
3、const_iterator
只用于读取容器内的元素,但不能改变值。
E.g.
for(vector<string>::const_iterator iter=text.begin();iter!=text.end();++iter)
cout<<*iter<<endl;
//error
for(vector<string>::const_iterator iter=text.begin();iter!=text.end();++iter)
*iter=" ";//error
注意:
const_iterator不同于const的iterator对象,声明一个const迭代器,必须初始化,初始化后值不能改变。
vector<int> nums(10);
const vecotr<int>::iterator cit=nums.begin();
*cit=1;//ok
++cit;//error