迭代器分为正向迭代器和反向迭代器
正向迭代器:iterator
const_iterator
反向迭代器:reverse_iterator
const_reverse_iterator
有人会问迭代器是什么?
本质就是指针封装成一个类,然后这个类实现指针的所有操作作为自己的成员函数,让这个类使用起来和指针一样
迭代器有什么用呢?
提供了一种统一的方式访问和修改容器的数据
例如我们对string类对象进行遍历:
我们首先想到的是用下标和[ ]进行遍历,因为string类对[ ]进行了运算符重载
代码如下
string s1={"hello world"};
for(int i=0;i<s1.size();i++)
{
cout<<s1[i]<<endl;
}
还有一种方法使用迭代器(迭代器的范围是[a,b}左闭右开的)
代码如下
string s2={"hello world"}
string::iterator it=s2.begin();//迭代器it指向了s2的首地址
while(it!=s2.end())
{
cout<<*it<<" ";
++it;//取下一个字符地址
}
c++11还提供了一种方法(范围for)
底层也是用迭代器实现的
迭代器加上const和普通对象一样限制了迭代器的权限
例如:
void Func(const string* s)
{
//此处不能输出it,因为const限制了迭代器的权限,不然会放大迭代器的权限
string::const_iterator it=s.begin();
}