binder2nd<AdaptableBinaryFunction>
描述
Binder2nd是一个函数对象适配器:它用于将一个可适配二元函数转换为一个可适配一元函数。具体来说,如果f是类binder2nd<AdaptableBinaryFunction>的对象,那么f(x)返回F(x, c),其中F是类AdaptableBinaryFunction,并且其中c是一个常量。两者F和c都作为参数传递给binder2nd的构造函数。[1]创建binder2nd的最简单方法不是显式调用构造函数,而是使用辅助函数bind2nd.
示例
在列表中查找第一个正数。list<int> L;
...
list<int>::iterator first_positive =
find_if(L.begin(), L.end(), bind2nd(greater<int>(), 0));
assert(first_positive == L.end() || *first_positive > 0);
定义
在标准头文件functional中定义,并在非标准向后兼容头文件function.h中定义。模板参数
参数 |
描述 |
默认值 |
AdaptableBinaryFunction
|
要将其第二个参数绑定到常量的二元函数的类型。 |
|
模型
可适配一元函数
类型要求
AdaptableBinaryFunction必须是可适配二元函数的模型。公共基类
unary_function<AdaptableBinaryFunction::first_argument_type,
AdaptableBinaryFunction::result_type>
成员
成员 |
定义位置 |
描述 |
argument_type
|
可适配一元函数
|
函数对象的参数类型,即AdaptableBinaryFunction::first_argument_type
|
result_type
|
可适配一元函数
|
结果的类型AdaptableBinaryFunction::result_type
|
result_type operator()(const argument_type& x) const
|
可适配一元函数
|
函数调用。返回F(x, c),其中F和c是构建此binder1st时使用的参数。 |
binder2nd(const AdaptableBinaryFunction& F,
AdaptableBinaryFunction::second_argument_type c)
|
binder2nd
|
见下文 |
template <class AdaptableBinaryFunction, class T>
binder2nd<AdaptableBinaryFunction>
bind2nd(const AdaptableBinaryFunction& F, const T& c);
|
binder2nd
|
见下文 |
新成员
这些成员未在可适配一元函数要求中定义,而是特定于binder2nd.
成员 |
描述 |
binder2nd(const AdaptableBinaryFunction& F,
AdaptableBinaryFunction::second_argument_type c)
|
构造函数。创建一个binder2nd,以便使用参数x(其中x的类型为AdaptableBinaryFunction::first_argument_type)调用它对应于调用F(x, c).
|
template <class AdaptableBinaryFunction, class T>
binder2nd<AdaptableBinaryFunction>
bind2nd(const AdaptableBinaryFunction& F, const T& c);
|
如果F是类型AdaptableBinaryFunction的对象,那么bind2nd(F, c)等价于binder2nd<AdaptableBinaryFunction>(F, c),但更方便。类型T必须可转换为AdaptableBinaryFunction::second_argument_type。这是一个全局函数,而不是成员函数。 |
[1] 直观地说,您可以将此操作视为“将二元函数的第二个参数绑定到一个常量”,从而产生一个一元函数。这是闭包的一种特殊情况。
另请参阅
函数对象概述,binder1st,可适配一元函数,可适配二元函数
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。
商标信息