STL源码剖析 第三章

来源:互联网 发布:妇科检查 知乎 编辑:程序博客网 时间:2024/06/10 12:10

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

指向常数对象的指针

0 0
原创粉丝点击