STL源码剖析 第三章

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

指向常数对象的指针

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值