SGI

binder2nd<AdaptableBinaryFunction>

类别:函子,适配器 组件类型:类型

描述

Binder2nd是一个函数对象适配器:它用于将一个可适配二元函数转换为一个可适配一元函数。具体来说,如果f是类binder2nd<AdaptableBinaryFunction>的对象,那么f(x)返回F(x, c),其中F是类AdaptableBinaryFunction,并且其中c是一个常量。两者Fc都作为参数传递给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),其中Fc是构建此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可适配一元函数可适配二元函数
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc. 保留所有权利。 商标信息