iterator(迭代器)

迭代器简述(iterator):

指针与数组


针与其它数据结构呢?比如说链表?

存储空间是非连续的。不能通过对指向这种数据结构的指针做累加来遍历。

能不能提供一个行为类似指针的类,来对非数组的数据结构进行遍历呢?这样我们就能够以同样的方式来遍历所有数据结构(容器)。

迭代器(Iterator)是指针(pointer)的泛化,它允许程序员以相同的方式处理不同的数据结构(容器)STL中有五种类型的迭代器,它们分别满足一定的要求。不同的迭代器要求定义的操作不一样。


箭头表示左边的迭代器一定满足右边迭代器需要的条件。比如某个算法需要一个双向迭代器(Bidirctional Iterator)你可以把一个任意存取迭代器(Random Access Iterator)作为参数;但反之不行

 

迭代器iterator 提供了一种一般化的方法对顺序或关联容器类型中的每个元素进行连续访问

例如,假设iter为任意容器类型的一个iterator,则++iter 表示向前移动迭代器使其指向容器的下一个元素,而*iter 返回iterator 指向元素的值,每种容器类型都提供一个begin()和一个end()成员函数。

begin()返回一个iterator 它指向容器的第一个元素

end()返回一个iterator 它指向容器的末元素的下一个位置

通过迭代器,我们可以用相同的方式来访问、遍历容器。


不同容器提供自己的迭代器,所以不同迭代器具有不同的能力


迭代器的作用:

能够让迭代器与算法不干扰的相互发展,最后又能无间隙的粘合起来。

重载了*++,==,!=,=运算符。用以操作复杂的数据结构。

容器提供迭代器,算法使用迭代器。

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值