STL源代码剖析个人总结6--STL配接器
2012-08-31 08:39
337 查看
配接器在STL组件的灵活应用组合中扮演着转换器的角色,《设计模式》一书中将其定义为了一种设计模式。
适配器按照其使用的场合分为三种类型:
容器适配器: 改变容器的接口
迭代器适配器 : 改变迭代器的接口
仿函数适配器 : 能对仿函数进行组合或改变其接口
一. 容器适配器
如前面容器一节讲述过的stack,queue 都是通过修饰改变一下deque的接口而得到的
二. 迭代器适配器
<1>. Insert Iterator: 插入型迭代器适配器主要有三个--back_inserter(Container& x),front_inserter(Container& x),inserter(Container&x,Iterator i).
每一个插入型的迭代器适配器内部都维护着一个容器;容器拥有自己的迭代器,于是当客户端对插入型适配器执行赋值操作时会在适配器内部转换成对容器本身的操作,但若是容器本身没有提供相应的插入操作,则相应的插入型适配器不能用于此容器之上。(如因vector未提供front_insert操作,故front_inserter不能应用于vector,否则执行时会出错。)
<2>. Reverse iterators:逆序迭代器适配器,主要有rbegin(),rend()
迭代器必须是双向迭代器,并且其有begin(),end()方可使用此逆序迭代器适配器。一定要注意rbegin(),rend()与begin(),end()之间的关系。
<3>. IOStream Iterator: 输入输出流迭代器适配器
绑定到istream的迭代器具有输入功能
绑定到ostream的迭代器具有输出功能
三. 函数配接器
函数配接器是所有配接器中数量最大的一个族群,其配接灵活性 独一无二的。通过其间的绑定、组合、修饰等,几乎可以无限制的创造出各种可能的表达式,并搭配STL算法其演出。大多数函数配接器都定义在文件functional中。(未完,待续。。。)
适配器按照其使用的场合分为三种类型:
容器适配器: 改变容器的接口
迭代器适配器 : 改变迭代器的接口
仿函数适配器 : 能对仿函数进行组合或改变其接口
一. 容器适配器
如前面容器一节讲述过的stack,queue 都是通过修饰改变一下deque的接口而得到的
二. 迭代器适配器
<1>. Insert Iterator: 插入型迭代器适配器主要有三个--back_inserter(Container& x),front_inserter(Container& x),inserter(Container&x,Iterator i).
每一个插入型的迭代器适配器内部都维护着一个容器;容器拥有自己的迭代器,于是当客户端对插入型适配器执行赋值操作时会在适配器内部转换成对容器本身的操作,但若是容器本身没有提供相应的插入操作,则相应的插入型适配器不能用于此容器之上。(如因vector未提供front_insert操作,故front_inserter不能应用于vector,否则执行时会出错。)
<2>. Reverse iterators:逆序迭代器适配器,主要有rbegin(),rend()
迭代器必须是双向迭代器,并且其有begin(),end()方可使用此逆序迭代器适配器。一定要注意rbegin(),rend()与begin(),end()之间的关系。
<3>. IOStream Iterator: 输入输出流迭代器适配器
绑定到istream的迭代器具有输入功能
绑定到ostream的迭代器具有输出功能
三. 函数配接器
函数配接器是所有配接器中数量最大的一个族群,其配接灵活性 独一无二的。通过其间的绑定、组合、修饰等,几乎可以无限制的创造出各种可能的表达式,并搭配STL算法其演出。大多数函数配接器都定义在文件functional中。(未完,待续。。。)
相关文章推荐
- STL源代码剖析个人总结1--STL的内存管理
- STL源代码剖析个人总结2--STL的迭代器
- STL源代码剖析个人小结3--STL容器
- STL容器特征总结及源码剖析
- STL 源代码剖析 算法 stl_algo.h -- partition
- STL 源代码剖析 算法 stl_numeric.h -- copy
- STL 源代码剖析 算法 stl_algo.h -- lower_bound
- STL源代码剖析
- STL 源代码剖析 算法 stl_algo.h -- merge sort
- STL源代码剖析 容器 stl_hashtable.h
- STL 之 queue、priority_queue 源代码剖析
- STL源代码剖析 容器 stl_stack.h
- STL 源代码剖析 算法 stl_algo.h -- inplace_merge
- stl题目列表和个人总结
- STL源码剖析总结
- memcached 源代码 研究 个人总结(未完),踩在前人的肩膀上,还是很渺小
- STL源代码剖析 容器 stl_deque.h
- STL源代码剖析个人总结5--STL仿函数
- STL"源码"剖析-重点知识总结
- STL之hashtable源代码剖析