STL学习(?函数对象,谓词,内建函数对象)

发布于:2025-07-24 ⋅ 阅读:(20) ⋅ 点赞:(0)

目录

一、函数对象

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>      // 逻辑非

 


网站公告

今日签到

点亮在社区的每一天
去签到