配接器中,改变仿函数的接口者,称为function adapter,改变容器接口者,称为container adapter,改变迭代器接口者,称为iterator adapter
应用于容器,container adapter
即STL提供的两个容器queue和stack,其实都只不过是一种配接器,他们修饰deque的接口而成就出另一种容器风格。
应用于迭代器,iterator adapter
包括insert iterator,reverse iterator,iostream iterator,C++ standard规定他们的接口可以由获得
下面来依次介绍他们
insert iterator,可以将一般迭代器的赋值操作转变为插入操作,这样的迭代器包括专司尾端插入操作的back_insert_iterator,专司头端插入操作front_insert_iterator,以及可以从任何位置进行插入的insert_iterator,由于这三个函数太长了,所以STL更提供了三个相应函数,back_inserter(),front_inserter(),inserter()。
reverse iterator,可以将一般迭代器的行进方向逆转,使原来的operator++变成了后退操作。
iostream iterator,将迭代器绑定在某个iostream对象身上,绑定在istream对象身上的,称为istream_iterator,用于输入能力;绑定在ostrem对象身上的,称为ostream_iterator,用于输入能力。这种迭代器用于屏幕输出,非常方便
应用于仿函数
包括系结bind,否定,组合,以及一般函数或成员函数的修饰,在中
如
这个式子将less()的第二个参数系结(绑定)为12,再加上否定操作,便形成了不小于12的寓意。
再必须加入我们要做两次函数调用f(g(x)),此时可以这么写
对参数进行否定:not1,not2(应用于条件判断)
以count_if 条件判断为例
对参数进行绑定:bind1st,bind2st(应用于绑定参数)
用于函数合成compose1(两个函数),compose2(三个函数)(应用于参数变化)
用于函数指针:ptr_fun用于成员函数指针:mem_fun,mem_fun_ref(应用于把函数或者成员函数变成STL模式)