适配器是使一事物的行为类似于另一类事物的行为的一种机制。 C++中有三类适配器,分别是容器适配器,迭代器适配器和函数适配器,这里主要介绍函数适配器。
1 容器适配器 : 容器适配器让一种已存在的容器类型采用另一种不同的抽象类型的工作方式实现,主要有stack,queue,priority_queue。对于给定的适配器,其关联的容器必须满足一定的约束条件。stack适配器所关联的基础容器可以是任何一种顺序容器类型,stack栈可以建立在vector、list、deque容器之上。而queue适配器要求其关联的基础容器必须提供push_front运算,因此只能建立在list和deque容器上,而不能建立在vector容器上。priority_queue适配器要求提供随机访问功能,因此可建立vector或deque容器上,但不能建立在list容器上。默认情况下,stack和queue都基于deque容器实现,priority_queue在vector容器上实现。
2 函数适配器: 函数适配器是用来让一个函数对象表现出另外一种类型的函数对象的特征。因为,许多情况下,我们所持有的函数对象或普通函数的参数个数或是返回值类型并不是我们想要的,这时候就需要函数适配器来为我们的函数进行适配,函数适配器主要用于特化和扩展一元,二元函数对象,函数适配器主要有以下两类:
绑定器:该类适配器用于将二元函数适配成一元函数,将二元函数的一个参数绑定到一个特定的值上,将二元函数对象转换成一元函数对象。绑定器适配器有两种:bind1st bind2nd。每个绑定器接受一个函数对象和一个值。 bind1st将给定值绑定到二元函数对象的第一个实参 bind2nd将给定值绑定到二元函数对象的第二个实参。取反器 将函数对象的结果真值求反。取反器有两种:not1和not2,not1是对一元函数对象求反的取反器,传递给函数对象的只有一个参数,则要使用这个not1,not2是对二元函数对象求反的取反器。3 迭代器适配器:扩展迭代器的功能,主要有:插入迭代器,反向迭代器,流迭代器。
参考链接:
http://blog.csdn.net/nkguohao/article/details/8811725http://blog.csdn.net/rain_qingtian/article/details/9977673