迭代器是什么
- 迭代器是一种行为类似指针的对象,通过重载一些操作指针的如++,--,*,->,可以不知道容器的结构来访问容器。
为什么每一种容器都提供有专属的迭代器
要设计出一个容器的迭代器就必须对这个容器实现的细节非常的了解,既然无法避免曝光容器的细节,那么就把这个工作交给这个容器的设计者,这样一来,容器的所有细节得到了封装,不被使用者看到。
- 第一为了保持数据结构的面向对象的封装性
- 第二是为了让使用stl的成本降低。
迭代器的作用:
- 1.可以不知道容器的结构来访问容器。
- 2.向胶水一样的把算法完美的作用到容器上。
STL的核心思想:效率和复用
- 算法:算法关注的是逻辑
- 容器:数据管理
算法是通过迭代器作用到算法上的,所以为了算法的效率,于是就有了迭代器萃取,根据迭代器的内嵌类型,决定出迭代器类型,选出合适的算法。
问题: 算法中要定义一个变量, 以“迭代器指向对象的类型value type”为型别,该怎么定义这个变量?
- function template的推演
算法中可以根据传入的迭代器参数,通过模板参数类型的推演出,推演出其迭代器所指对象的类型;但返回值无法推演。
- 在迭代器里面设置内嵌value type 型别,在需要的地方通过 Iterator::value type来解决。
对于迭代器是class type可以设置内嵌类型value type来解决;但若例