<functional>
定义标准模板库 (STL) 函数帮助构建的函数对象又称为 functors,并且他们的活页夹。函数的对象是用于定义的类型的operator()。一个函数对象可以是函数指针,但更常见的是,该对象用于存储函数调用的过程中可以访问的其他信息。
#include <functional>
备注
算法需要两种类型的函数对象: 一元和二元。一元函数对象需要一个参数,并且函数二进制对象需要两个参数。函数对象和函数指针可以作为一个谓词的算法,但函数对象还可适应并增加范围、 灵活性和效率的 STL。如有必要,例如,值绑定到一个函数算法在传递之前,函数指针可以不使用。函数适配器将函数指针转换为可以绑定的值的适应性强的函数对象。<functional> 标头 此外包含允许作为适应性强的函数对象调用成员函数的成员函数适配器。函数是适应性强,如果他们有嵌套的类型声明指定它们的参数和返回类型。C + + 标准需要此适应性由具有从 unary_function 或 binary_function 的基类继承的所有标准对象类。函数的对象和它们的适配器允许 STL 升级现有的应用程序,并帮助将 STL 集成到 C++ 编程环境。
TR1 扩展
TR1 的 Visual C++ 实现中添加了以下功能:
A 调用签名是后面带圆括号以逗号分隔列表的零个或多个参数类型的返回类型的名称。
A 调用包装是一个调用包装类型的对象。
A 调用包装类型是一种可调用的对象,并支持将转发到该对象的调用操作的类型。
A 可调用对象是一个可调用的类型的对象。
A 可调用的类型是一个指向函数、 指向成员函数的指针,指向成员数据的指针或类类型的对象可以立即出现函数调用运算符的左边。
A 目标对象是持有一个调用包装对象的可调用的对象。
Pseudo-function INVOKE(f, t1, t2, ..., tN)是由于下列情况之一:
(t1.*f)(t2, ..., tN)当f是指向类的成员函数的指针T和t1是一个对象类型的T或类型的对象的引用T从派生类型的对象的引用或T。
((*t1).*f)(t2, ..., tN)当f是一个指向类的成员函数T和t1不是在前一项中所描述的类型之一。
t1.*f当f是一个指向类的成员数据T和t1是一个对象类型的T或对引用类型的对象T从派生类型的对象的引用或T。
(*t1).*f当f是一个指向类的类的成员数据T和t1不是在前一项中所描述的类型之一。
f(t1, t2, ..., tN)在所有其他情况下。
Pseudo-function INVOKE(f, t1, t2, ..., tN, R)意味着INVOKE(f, t1, t2, ..., tN)隐式转换为R。
如果调用包装具有弱的结果类型,其成员的类型的类型result_type类型T的包装,如下所示的目标对象:
如果T是一个指向函数, result_type是一个同义词的返回类型为T。
如果T是一个指向成员函数, result_type是一个同义词的返回类型为T。
如果T是一个指向数据成员result_type是一个同义词的数据成员的声明类型。
如果T是类类型具有成员类型的result_type,然后result_type是一个同义词的T::result_type。
否则,将任何成员result_type。
每个调用包装具有复制构造函数。A 调用的简单包装是的赋值运算符和其复制构造函数和赋值运算符不引发异常的调用包装。A 转发调用包装是调用包装器,可以通过使用参数列表调用t1, t2, ..., tN,其中每个ti是一个 lvalue。
此标头支持函数调用的运算符具有参数的类型中定义的调用包装T1, T2, ..., TN,其中0 <= N <= NMAX。在此实现中,值NMAX是 10。
类
描述指示引发异常的调用的类operator()在函数对象失败,因为该对象为空。 |
|
模板类提供对指定的二进制函数的返回值求反的成员函数。 |
|
模板类提供一个二进制函数对象转换为一个一元函数对象通过将二进制函数的第一个参数绑定到指定的值的构造函数。 |
|
模板类提供一个二进制函数对象转换为一个一元函数对象通过将二进制函数的第二个参数绑定到指定的值的构造函数。 |
|
允许常量成员函数不采用任何参数调用作为一元函数对象时使用引用参数初始化的适配器类。 |
|
允许常量成员函数不采用任何参数为一元函数对象初始化的指针参数时调用的适配器类。 |
|
允许常量成员函数采用一个参数调用作为二进制函数对象时使用引用参数初始化适配器类。 |
|
允许常量成员函数采用一个参数作为二进制函数对象初始化的指针参数时调用的适配器类。 |
|
包装可调用对象的类。 |
|
计算一个值的哈希代码的类。 |
|
如果通过调用生成特定类型的测试类bind。 |
|
如果特定类型的占位符来测试的类。 |
|
适配器类,用于 non_const 不使用参数作为引用参数使用初始化一元函数对象调用的成员函数。 |
|
适配器类,用于 non_const 不使用参数作为一元函数对象初始化的指针参数时调用的成员函数。 |
|
适配器类,用于 non_const 作为二进制函数对象使用引用参数初始化时调用的单个参数的成员函数。 |
|
适配器类,用于 non_const 作为二进制函数对象初始化的指针参数时调用的单个参数的成员函数。 |
|
适应性强的二进制函数转换为二进制的函数指针。 |
|
一元函数指针转换为可适应一元函数。 |
|
所引用的包装类。 |
|
保存的返回类型的可调用的被包装对象的结构。 |
|
模板类提供对返回值的函数指定的一元求反的成员函数。 |
函数
将参数绑定到可调用的对象。 |
|
创建适配器,以二进制函数对象转换为一个一元函数对象通过将二进制函数的第一个参数绑定到指定的值的帮助器模板函数。 |
|
创建适配器,将通过将二进制函数的第二个参数绑定到指定的值转换成一元函数对象的二进制函数对象的帮助器模板函数。 |
|
返回两个参数的二进制 AND。 |
|
返回的二进制或两个参数。 |
|
返回两个参数的二进制异或。 |
|
构造为常量reference_wrapper参数中。 |
|
生成一个简单的调用包装。 |
|
帮助器构造函数的成员函数使用指针参数初始化的对象适配器所使用的模板函数。 |
|
帮助器模板函数用于构造函数的成员函数时使用引用参数初始化的对象适配器。 |
|
返回一个一元谓词的补充。 |
|
返回一个二元谓词的补充。 |
|
帮助器模板函数用于转换一元和二元函数指针,分别为一元和二元适应性强的函数。 |
|
构造reference_wrapper参数中。 |
|
调换两个function对象。 |
结构
一个空的基本类定义了可以由派生类提供一个二进制函数对象的继承类型。 |
|
该类提供对某个指定的值类型的元素执行算术运算的部门的一个预定义的函数对象。 |
|
二元谓词,用于指定类型的值是否等于另一个值,该类型的测试。 |
|
二元谓词,用于指定类型的值是否大于另一个值,该类型的测试。 |
|
二元谓词,用于指定类型的值是否大于或等于另一个值,该类型的测试。 |
|
二元谓词,用于指定类型的值是否小于另一个值,该类型的测试。 |
|
二元谓词,用于指定类型的值是否小于或等于另一个值,该类型的测试。 |
|
该类提供对指定的值类型和真实的测试的元素或 falsity 的结果执行逻辑操作一起使用的预定义的函数对象。 |
|
该类提供的预定义的函数对象的元素指定的值类型和真实的测试或 falsity 的结果执行逻辑求反的操作。 |
|
该类提供对指定的值类型和真实的测试的元素或 falsity 的结果执行逻辑或运算的操作的预定义的函数对象。 |
|
该类提供对某个指定的值类型的元素执行减法的算术运算的预定义的函数对象。 |
|
该类提供对某个指定的值类型的元素执行算术运算的模数的预定义的函数对象。 |
|
该类提供对某个指定的值类型的元素执行乘法的算术运算的预定义的函数对象。 |
|
此类提供了预定义的函数返回的对象的一个元素值的负值。 |
|
用于测试是否指定类型的值不等于另一个值,该类型的二元谓词。 |
|
该类提供对某个指定的值类型的元素执行的加法算术运算的预定义的函数对象。 |
|
一个空的基本类定义了可以由派生类提供一个一元函数对象的继承类型。 |
对象
可替换参数的占位符。 |
运算符
不允许调用对象的相等比较。 |
|
不允许调用对象的不相等比较。 |