迭代器:iterator

迭代器是对指针的封装,提供了一种统一访问容器数据的方式。它有正向和反向两种类型,如iterator和const_iterator。通过迭代器,可以方便地遍历和修改容器中的元素,例如在string对象中。文章还提到了C++11的范围for循环,其底层也基于迭代器实现,并且const修饰的迭代器限制了对容器元素的修改权限。
摘要由CSDN通过智能技术生成

迭代器分为正向迭代器和反向迭代器

正向迭代器: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();
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值