目录
一、函数对象
1.函数对象的概念
2.函数对象的使用
(1)函数对象在使用的时候,可以像普通函数那样调用,可以有参数,也可以有返回值。
(2)函数对象超出普通函数的概念,函数对象由于是类,可以有自己的状态
(3)函数对象可以作为参数传递
二、谓词
1.一元谓词
2.二元谓词
三、内建函数对象
1.算数仿函数
2.关系仿函数
3.逻辑仿函数
一、函数对象
1.函数对象的概念
重载函数调用运算符的类,也叫仿函数,本质是类而不是函数
2.函数对象的使用
(1)函数对象在使用的时候,可以像普通函数那样调用,可以有参数,也可以有返回值。
(2)函数对象超出普通函数的概念,函数对象由于是类,可以有自己的状态
(3)函数对象可以作为参数传递
既然他可以作为参数传递,所以很多STL的算法都有这个作为参数。
二、谓词
对于仿函数,返回值类型是bool数据类型,称为谓词。
1.一元谓词
如果operator()接收一个参数,那么叫做一元谓词。所以说函数对象都是和算法一起使用的。
2.二元谓词
如果operator()接收二个参数,那么叫做二元谓词
三、内建函数对象
就是有很多函数对象常用,所以STL都给封装好了,不需要自己写了。需要引入头文件#include<functional>。
1.算数仿函数
函数原型
template<<class T> T plus<T> // 加法仿函数
template<<class T> T minus<T> // 减法仿函数
template<<class T> T multiplies<T> // 乘法仿函数
template<<class T> T divides<T> // 除法仿函数
template<<class T> T modules<T> // 取模仿函数
template<<class T> T negate<T> // 取相反数仿函数
2.关系仿函数
template<<class T> bool equal_to<T> //等于
template<<class T> bool not_equal_to<T> //不等于
template<<class T> bool greater<T> //不等于
template<<class T> bool greate_equal<T> //不等于
template<<class T> bool less<T> //不等于
template<<class T> bool less_equal<T> //不等于
这里排序使用的仿函数就是STL自带的了,而不是自己写的了。
3.逻辑仿函数
template<<class T> bool logical_and<T> // 逻辑与
template<<class T> bool logical_or<T> // 逻辑或
template<<class T> bool logical_not<T> // 逻辑非