一、简介
1、配接器其实是一种设计模式
(1)将一个class的接口转换为另一个class的接口
(2)是原本因为接口不兼容而不能合作的classes,可以一起运行
2、分类
(1)容器的配接器
(2)迭代器的配接器
(3)仿函数的配接器
二、容器的配接器
1、stack底层有deque实现
template<class T,class Container=deque<T> >
class stack
{
protected:
Container s;//底层容器
};
思考:为什么stack是容器的配接器
stack类屏蔽了deque的所有对外的接口,只开放了符合stack原则的几个函接口(这些接口是通过deque的接口转换而来的),所以说stack是一个配接器,一个作用于容器之上的配接器
2、queue
template<class T,class Container=deque<T> >
class queue
{
protected:
Container s;//底层容器
};
思考:为什么deque容器的配接器
三、迭代器的配接器
1、ReverseIterator
是屏蔽了Iterator的所有对外的接口,只开放了符合Reverseiterator的几个原则的接口(这些接口是通过Iterator的接口转换而来的)
四、仿函数的配接器
(1)仿函数的配接器可以实现两个函数的合成,例如>和=合成为>=,而+和=合成为+=
(2)可以事项对于函数指针的封装
五、总结
container adapters内藏了一个container member一样,reverse iterator底层内藏了iterator member,而functions 的底层内藏了一个functions,
每个配接器的底层都有封装了一个对象,既然是这个对象的主人,就有资格调用该对象,并在参数和返回值上动手脚