概要
STL的中心思想在于把数据(容器)和算法分离开,彼此之间没有关系,独立设计,都不必关心彼此的实现细节,但是那我们就需要用什么东西去使这两者能够结合起来,这就是迭代器的意义。
以 C++14 的 STL 源码为例,其线性查找函数如下所示
1 | /// This is an overload used by find algos for the Input Iterator case. |
这段代码是比较有代表性的,我们完全不知道容器内部的构造,但是能够通过迭代器对其元素进行访问。
基本概念
迭代器(iterator)是一种行为类似于指针的东西(对象,或者本身就是原生指针)。
那因此想到指针最重要的就是元素访问,所以需要对 * 运算符进行重载,再就是成员访问,因此还需要对 -> 运算符进行重载