### 理解迭代器是理解STL的关键所在。模板使得算法独立于存储的
### 数据类型,而迭代器使得算法独立于使用的容器类型,
### 因此它们都是STL通用方法的重要组成部分
泛型编程旨在使函数不仅独立于容器中存储的数据类型(可以为char、double等),
而且独立于容器本身的数据结构(可以是数组或是链表等)
模板提供了存储在容器中的数据类型的通用表示,因此还
需要遍历容器中的值(不区分容器种类)的通用表示,迭代器正是这样的通用表示
迭代器可能具备的多种功能:
- 解除引用以访问值:定义*操作
- 将一个迭代器赋给另一个:定义=操作
- 与另一个迭代器比较,看是否相等:定义==和!=操作
- 拥有遍历的功能:定义++操作(前缀和后缀)
- ### C++将operator++()作为前缀版本;将operator++(int)作为后缀版
- ### 本;其中的参数永远不会用到,所以不必指定其名称
实际上,STL按功能的强弱定义了多种级别的迭代器。常规指针也满足迭代器要求
STL通过为每个类定义适当的迭代器,并以统一的风格设计类,能够对内部表示绝然不同
的容器,编写相同的代码
作为一种编程风格,最好避免直接使用迭代器,而应尽可能使用STL函数(for_each())来处理细节。
也可使用C++11新增的基于范围的for循环
总结:基于算法的要求,设计基本迭代器的特征和容器特征