迭代器萃取和反向迭代器

迭代器是一种类似指针的对象,允许访问容器而无需了解其内部结构。每种容器提供专属迭代器以保持封装性和降低使用成本。迭代器主要用于连接算法和容器,其种类包括input、output、forward、bidirectional和random access。迭代器萃取和反向迭代器的目的是提高效率和算法适用性。反向迭代器通过内部正向迭代器实现逆序访问。
摘要由CSDN通过智能技术生成

迭代器是什么

  • 迭代器是一种行为类似指针的对象,通过重载一些操作指针的如++,--,*,->,可以不知道容器的结构来访问容器。

为什么每一种容器都提供有专属的迭代器

要设计出一个容器的迭代器就必须对这个容器实现的细节非常的了解,既然无法避免曝光容器的细节,那么就把这个工作交给这个容器的设计者,这样一来,容器的所有细节得到了封装,不被使用者看到。

  • 第一为了保持数据结构的面向对象的封装性
  • 第二是为了让使用stl的成本降低。

迭代器的作用:

  • 1.可以不知道容器的结构来访问容器。
  • 2.向胶水一样的把算法完美的作用到容器上。

STL的核心思想:效率和复用

  • 算法:算法关注的是逻辑
  • 容器:数据管理

算法是通过迭代器作用到算法上的,所以为了算法的效率,于是就有了迭代器萃取,根据迭代器的内嵌类型,决定出迭代器类型,选出合适的算法。

问题: 算法中要定义一个变量, 以“迭代器指向对象的类型value type”为型别,该怎么定义这个变量?

  • function template的推演

算法中可以根据传入的迭代器参数,通过模板参数类型的推演出,推演出其迭代器所指对象的类型;但返回值无法推演。

  • 在迭代器里面设置内嵌value type 型别,在需要的地方通过 Iterator::value type来解决。

对于迭代器是class type可以设置内嵌类型value type来解决;但若例

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值