SGI

二元_合成<AdaptiveBinaryFunction,AdaptableUnaryFunction1,AdaptableUnaryFunction2>

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

说明

Binary_compose属于 函数对象 适配器。如果f自适应二元函数,并且g1g2都是 自适应一元函数,如果g1'的 s 和g2'的返回值类型可转换为f'的 s 参数类型,则binary_compose可用于创建函数对象h使得h(x)f(g1(x), g2(x)). [1] [2]

相同

示例
list<int> L;
...
list<int>::iterator in_range = 
     find_if(L.begin(), L.end(),
             compose2(logical_and<bool>(),
                      bind2nd(greater_equal<int>(), 1),
                      bind2nd(less_equal<int>(), 10)));
assert(in_range == L.end() || (*in_range >= 1 && *in_range <= 10));

查找列表中处于 1 到 10 范围内的第一个元素。计算sin(x)/(x + DBL_MIN)

transform(first, last, first,
          compose2(divides<double>(),
                   ptr_fun(sin),
                   bind2nd(plus<double>(), DBL_MIN)));

的范围的每个元素。

定义binary_compose在标准头文件 functional 中定义,以及在非标准向后兼容的头文件中 function.h 中定义。

类是 SGI 的扩展;它不属于 C++ 标准。

模板参数 说明 参数
默认值 AdaptableBinaryFunctionbinary_compose函数组合运算中的“外部”函数的类型。即,如果h使得h(x) = f(g1(x), g2(x)) 为函数对象默认值,则f.  
AdaptableUnaryFunction1 的类型为 函数组合运算中的第一个“内部”函数的类型。即,如果binary_compose函数组合运算中的“外部”函数的类型。即,如果h使得h(x) = f(g1(x), g2(x)) 为函数对象默认值,则g1.  
AdaptableUnaryFunction2 函数组合运算中的第二个“内部”函数的类型。即,如果binary_compose函数组合运算中的“外部”函数的类型。即,如果h使得h(x) = f(g1(x), g2(x)) 为函数对象默认值,则g2.  

型号

自适应一元函数

类型要求

默认值必须是 自适应二元函数 的模型。AdaptableUnaryFunction1 的类型为AdaptableUnaryFunction2两者都必须是 自适应一元函数 的模型。AdaptableUnaryFunction1 的类型为AdaptableUnaryFunction2的参数类型必须彼此可转换。AdaptableUnaryFunction1 的类型为AdaptableUnaryFunction2的结果类型必须分别可转换为默认值.

的第一个和第二个参数类型。

unary_function<AdaptableUnaryFunction1::argument_type,
               AdaptableBinaryFunction::result_type>

公开基类

成员 成员 说明
定义位置 自适应一元函数 argument_type函数对象参数的类型.
AdaptableUnaryFunction::argument_type 自适应一元函数 result_type结果的类型
binary_compose(const AdaptableBinaryFunction& f, 
               const AdaptableUnaryFunction1& g1, 
               const AdaptableUnaryFunction1& g2); 
binary_compose AdaptableBinaryFunction::result_type
template <class AdaptableBinaryFunction, 
          class AdaptableUnaryFunction1,
          class AdaptableUnaryFunction2>
binary_compose<AdaptableBinaryFunction, 
               AdaptableUnaryFunction1,
               AdaptableUnaryFunction2>
compose2(const AdaptableBinaryFunction&, 
         const AdaptableUnaryFunction1&,
         const AdaptableUnaryFunction2&);
binary_compose AdaptableBinaryFunction::result_type

见下文。

新成员binary_compose.
成员 说明
binary_compose(const AdaptableBinaryFunction& f, 
               const AdaptableUnaryFunction1& g1, 
               const AdaptableUnaryFunction1& g2); 
这些成员未在 自适应一元函数 要求中定义,但特定于binary_compose构造函数。构造对象,调用该对象并带有参数xf(g1(x), g2(x)).
template <class AdaptableBinaryFunction, 
          class AdaptableUnaryFunction1,
          class AdaptableUnaryFunction2>
binary_compose<AdaptableBinaryFunction, 
               AdaptableUnaryFunction1,
               AdaptableUnaryFunction2>
compose2(const AdaptableBinaryFunction&, 
         const AdaptableUnaryFunction1&,
         const AdaptableUnaryFunction2&);
返回binary_composef(g1(x), g2(x))f, 创建一个对象。如果g2g默认值, AdaptableUnaryFunction1 的类型为对象。如果AdaptableUnaryFunction2函数对象,并且分别属于类compose2(f, g1, g2)等同于

binary_compose<AdaptableBinaryFunction, AdaptableUnaryFunction1, AdaptableUnaryFunction2>(f, g1, g2)

[1]这是一类函数组合。unary_compose适配器允许组合易变一元函数;但请注意,一旦引入了二元函数,就有几种函数组合的模式。该binary_compose允许你通过组合两个一元函数和一个二元函数来形成一个一元函数,但是你也可以考虑组合两个一元函数和一个二元函数来形成一个二元函数。在这种情况下,f, g1对象。如果g2会被合并成一个函数对象h使得h(x,y) = f(g1(x), g2(y)).

另请参见

函数对象概述,unary_compose, binder1st, binder2nd.
[Silicon Surf] [STL Home]
版权所有 © 1999 Silicon Graphics, Inc.保留所有权利。 商标信息