iterators模式定义:
提供一种方法,使之能够依序寻访某个聚合物(容器)所含的各个元素,而又无需暴漏该聚合物的内部表述方式。
3.1 迭代器设计思维——STL关键所在
STL中心思想:将数据容器和算法分开,彼此独立设计,最后再以已贴粘着剂将他们撮合在一起
3.2 迭代器是一种smart pointer
迭代器是一种行为类似指针的对象,指针的最常见最重要的是内容提领(取出指标所指物体的内容)和成员访问。所以,迭代器最重要的编程工作是对operator *和operator->进行重载。
auto_ptr
3.3 迭代器相应类别(associated types)
最常用的相应类别有五种
迭代器所指对象的型别value type
difference type
pointer
reference
iterator catagoly
使用函数模板的参数推导机制
推导的是参数,无法推导函数的返回值类型
3.4 traits编程技法——STL源代码门钥
参数类别推导技巧虽然可以用于value type,但非全面可用:value type 用于函数的传回值
声明内嵌型别
关键词typename 的用意在于告诉编译器这是个型别
隐晦的陷阱:并不是所有的迭代器都是class type,如果不是class type 就无法为他定义内嵌类别
partial specialization(偏特化)的意义
traits 意义是,如果I定义有自己的value type 那么通过这个traits的作用,萃取出来的value_type就是I::value_type
指向常数对象的指针