13.8  适配器

13.8 适配器

STL标准库提供了一组函数适配器,用来特殊化或扩展一元和二元函数对象。适配器是特殊的类,可以被分成以下4种类型:

1.绑定器

绑定器通过把二元函数对象的一个实参绑定到一个特殊值上,将其转换成一元函数对象。C++标准程序库提供了两种预定义的绑定器适配器:bind1st和bind2nd。bind1st把值绑定到二元函数对象的第一个实参上;bind2nd把值绑定在第二个实参上。绑定器非常有用,其使用也非常灵活。

2.取反器

取反器是将函数对象的值反转的函数适配器。C++标准程序库提供了两个预定义的取反适配器:not1和not2。not1翻转一元预定义函数对象的真值;not2翻转二元谓词函数的真值。取反器的定义和实现遵循成员函数适配器的模式。

3.成员函数适配器

成员函数适配器使成员函数可以被用作算法的参数。当算法需要调用一个标准的操作或自定义操作时,成员函数的使用可能是非常简便的。例如,

978-7-111-51399-5-Chapter13-76.jpg

4.函数指针适配器

函数指针适配器使函数指针可以被用作算法的参数。头文件<functional>提供了两个适配器,使函数指针可以和标准算法一起使用。

本节将上述4种类型分成两组:成员函数适配器和其他适配器。