适配器, 在STL中扮演着转换器的角色,本质上是一种设计模式,用于将一种接口转换成另一种接口,从而是原本不兼容的接口能够很好地一起运作。容器、迭代器、和函数都有适配器, 适配器不提供迭代器。
1、容器适配器
stack、queue-----内含底层容器Sequence,需要把Sequence利用Adapter适配一下
2、函数适配器
binder2nd-----bind2nd(less<int>())是一个object
搞清楚小括号是函数调用还是创建对象
函数适配器就是通过将一个操作数绑定到给定值,而将二元函数对象转换为一元函数对象。
函数适配器分为两类:绑定器 与 求反器。
仿函数适配器,相比于其他适配器更加地灵活,可以自由地组合适配。
绑定器:
通过bind,我们将仿函数与参数进行绑定,可实现算法所需的条件判断功能,例如判断小于12的元素时,可使用bind2nd(less(),12),就可以达到目的。
求反器:
否定(negate)这里就是取反的操作,例如not1(bind2nd(less(),12)),就可判断不小于12的元素。
3. 迭代器适配器
STL提供了很多应用于迭代器的适配器,主要有:
- insert_iterator:( 这种迭代器,可以将迭代器的赋值操作转变为插入操作。根据功能的不同,还分为用于尾端插入的back_insert_iterator,用于头端插入的front_insert_iterator,用于任意位置插入的insert_iterator)
- reverse_iterator:(正向加加的逆向就是减减的操作)逆向迭代器取值就是将正向迭代器退一个来取值
4. X适配器
- istream_iterator:这种迭代器,将自己绑定一个istream对象身上,从而获得输入的功能。
- ostream_iterator:这种迭代器,将自己绑定一个ostream对象身上,从而获得输出的功能。
- istreambuf_iterator:
- ostreambuf_iterator