本文主要是介绍STL——函数对象和谓词,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
函数对象
概念
-
重载函数调用操作符()的类,其对象常被称为仿函数
-
函数对象使用重载的()时,行为类似函数调用,也叫做仿函数
-
本质上仿函数是一个类,并不是一个函数
函数对象使用
-
函数对象在使用时,可以像普通函数一样调用,可以有参数,可以有返回值
-
函数对象超出普通函数的概念,函数对象可以有自己的状态(例如被使用了多少次)
-
函数对象可以作为参数传递
谓词
一元谓词
概念
-
返回bool类型的仿函数称为谓词
-
如果operator()接受一个参数,那么叫做一元参数
-
如果operator()接受两个参数,那么叫做二元谓词
例如:
内建函数对象
-
这些内建函数对象用法和一般的函数对象完全相同
-
使用需要引入头文件
#include<functional>
算术仿函数
实现四则运算
-
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 modulus<T>
//取模仿函数 -
template<class T> T negate<T>
//取反仿函数
全都是用模板,那么复用性更高
关系仿函数
实现关系对比
-
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 greater_equal<T>
//大于等于 -
template<class T> bool less<T>
//小于 -
template<class T> bool less_equal<T>
//小于等于
逻辑仿函数
-
template<class T> bool logical_and<T>
//逻辑与 -
template<class T> bool logical_or<T>
//逻辑或 -
template<class T> bool logical_not<T>
//逻辑非
这篇关于STL——函数对象和谓词的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!