配接器:
将一个不适合的接口,转换为合适的接口,使原本不能用的接口兼容。
其中用于仿函数(函数对象)的接口, 称为 function object adaptor。
示例: 二元函数 与 一元判定
代码片段1:函数对象配接器
头文件: VC STL #include<functional> SGI #include <stl_function.h>
binder2nd(const Operation& x, const typename Operation::second_argument_type& y) : op(x), value(y)
{
}
typename Operation::result_type operator()(const typename Operation::first_argument_type& x) const
{
return op(x, value);
}
代码片段2:仿函数
头文件:VC STL #include < functional> SGI #include <stl_function.h>
template <class T>
class greater : public binary_function<T, T, bool>
{
bool operator()(const T& x, const T& y) const { return x > y; }
};
代码片段3:
头文件: VC #include <algorithm> SGI #include <stl_algo.h> _IO remove_copy_if(_II _F, _II _L, _OI _X, _Pr _P)
{
for (; _F != _L; ++_F)
if (!_P(*_F))
*_X++ = *_F;
return (_X);
}
代码片段3:main
以VC 下为例:
#include <algorithm>
#include <cstddef>
#include <functional>
#include <iostream>
#include <iterator>
using namespace std;
int main()
{
int a[] = {10, 20, 30};
const size_t SIZE = 3;
remove_copy_if(a, a + SIZE, ostream_iterator<int>(cout, "\n"),bind2nd(greater<int>(), 15));
return 0;
}