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