一、迭代器设计思维——STL关键所在
STL的中心思想在于:将数据容器(containers)和算法(algorithms)分开,彼此独立设计,最后再以一帖粘合剂将它们撮合在一起。
二、迭代器(iterator)是一种 smart pointer
迭代器是一种行为类似指针的对象,而指针的各种行为中最常见也最重要的便是内容提领(dereference)和成员访问(member access),因此,迭代器最重要的编程工作就是对 operator* 和 operator-> 进行重载(overloading)工作。
每一种STL容器都提供有专属迭代器的缘故。
三、Traits编程技法——STL源代码门钥
若要 traits 能够有效运作,每一个迭代器必须遵循约定,自行以内嵌型别定义(nested typedef)的方式定义出相应型别(associated types)。根据经验,最常用到的迭代器相应型别有五类:value type,difference type,pointer,reference,iterator catagoly。
// "榨汁机"traits
template <class Iterator>
struct iterator_traits {
typedef typename Iterator::iterator_category iterator_category;
typedef typename Iterator::value_type