一、函数对象概念
1、重载函数调用操作符的类的对象称为函数对象
2、函数对象使用重载的函数调用操作符时,行为类似函数调用,因此也称其为仿函数
3、函数对象可以有返回值,可以有参数,可以像普通函数一样调用
4、与普通函数不同的是:函数对象可以有自己的状态,函数对象可以作为参数传递
二、谓词
1、返回类型为bool类型的仿函数称为谓词,其参数为一个,则是一元谓词,参数为两个,则是二元谓词
三、内建函数对象
STL内建了一些函数对象,使用内建函数对象需要引入头文件<functional>主要是以下几大类
1、算数仿函数
(1)加法仿函数:plus<T> a; a(num1, num2);
(2)减法仿函数:minus<T> a; a(num1, num2);
(3)乘法仿函数:multiplies<T> a; a(num1, num2);
(4)除法仿函数:divides<T> a; a(num1, num2);
(5)取模仿函数:modulus<T> a; a(num1,num2);
(6)取反仿函数:negate<T> a; a(num);
2、关系仿函数
(1)等于仿函数:equal_to<T> a; a(num1, num2);
(2)不等于仿函数:not_equa_to<T> a; a(num1, num2);
(3)大于仿函数:greater<T> a; a(num1, num2);
(4)大于等于仿函数:greater_equal<T> a; a(num1, num2);
(5)小于仿函数:less<T> a; a(num1, num2);
(6)小于等于仿函数:less_equal<T>a; a(num1, num2);
3、逻辑仿函数
(1)逻辑与:logical_and<T> a; a(num1, num2);
(2)逻辑或:logical_or<T> a; a(num1, num2);
(3)逻辑非:logical_not<T> a; a(num1);