pointer_to_unary_function<Arg, Result>
描述
Pointer_to_unary_function是一个函数对象适配器,它允许一个函数指针Result (*f)(Arg)被视为一个可适应的一元函数。即:如果F是一个pointer_to_unary_function<Arg, Result>它使用一个基础函数指针进行了初始化f类型为Result (*)(Arg),则F(x)调用函数f(x)。二者之间的区别在于f和F是pointer_to_unary_function是一个可适应的一元函数,即它定义了嵌套typedefsargument_type和result_type.
请注意,一个类型为Result (*)(Arg)的函数指针是一个完全出色的一元函数对象,可以传递给一个 STL 算法,该算法期望一个参数为一元函数。使用pointer_to_unary_function对象的原因仅在于你需要在一个需要可适应的一元函数的上下文中使用一个普通函数,例如,作为函数对象适配器的参数。
大多数情况下,你不需要声明类型为pointer_to_unary_function的对象。使用ptr_fun函数进行构造几乎总是更简单的。
示例
以下代码片段使用标准库函数fabs替换了一个范围内的所有数字为其绝对值。在这种情况下,没有必要使用pointer_to_unary_function适配器。transform(first, last, first, fabs);
以下代码片段使用其绝对值的负值替换了一个范围内的所有数字。在这种情况下,我们正在组合fabs和negate。这要求fabs被视为一个可适应的一元函数,因此确实需要使用一个pointer_to_unary_function适配器。transform(first, last, first,
compose1(negate<double>, ptr_fun(fabs)));
定义
在标准头文件functional和非标准后向兼容性头文件function.h中进行定义。模板参数
参数 |
描述 |
默认值 |
Arg
|
函数对象的类型 |
|
Result
|
函数对象的结果类型 |
|
模型
可适应的一元函数
类型要求
公有基类
一元函数<Arg, Result>
成员
成员 |
定义位置 |
描述 |
argument_type
|
可适应的一元函数
|
函数对象的类型Arg.
|
result_type
|
可适应的一元函数
|
结果类型Result
|
result_type operator()(argument_type x)
|
一元函数
|
函数调用运算符。 |
pointer_to_unary_function(Result (*f)(Arg))
|
pointer_to_unary_function
|
见下文。 |
pointer_to_unary_function()
|
pointer_to_unary_function
|
见下文。 |
template <class Arg, class Result>
pointer_to_unary_function<Arg, Result>
ptr_fun(Result (*x)(Arg));
|
pointer_to_unary_function
|
见下文。 |
新成员
这些成员未在可适应的一元函数要求中定义,但特定于pointer_to_unary_function.
成员 |
描述 |
pointer_to_unary_function(Result (*f)(Arg))
|
构造函数。创建一个pointer_to_unary_function其底层函数是f.
|
pointer_to_unary_function()
|
默认构造函数。这将创建一个pointer_to_unary_function不具有底层 C 函数,因此实际上无法调用的 |
template <class Arg, class Result>
pointer_to_unary_function<Arg, Result>
ptr_fun(Result (*x)(Arg));
|
如果f属于Result (*)(Arg)类型,那么ptr_fun(f)等效于pointer_to_unary_function<Arg,Result>(f),但更方便。这是一个全局函数,而不是成员。 |
注释
另请参见
pointer_to_binary_function, ptr_fun,自适应一元函数
版权所有 © 1999 Silicon Graphics, Inc. 全部权利保留。
商标信息