您的位置:首页 > 编程语言 > C语言/C++

C++仿函数详解

2017-07-16 13:36 363 查看
仿函数,简单来说,使用一个类来实现一个函数,通过运算符重载,使得这个类有函数的对应功能。

举个简单仿函数实现的例子:

#include <iostream>
#include <algorithm>

using namespace std;

template<typename T>

class testFunctor_dis
{
public:
void operator()(const T&x)
{
cout << x << endl;
}
};

int main()
{
int lst[] = {1,2,3,4,5,6};
for_each(lst, lst + 6, testFunctor_dis<int>());
}


在STL有着众多的仿函数实现,主要有以下几类:

预定义仿函数:

算数类

仿函数效果
negate<type>()
取负
- param
plus<type>()
param1 + param2
minus<type>()
param1 - param2
multiplies<type>()
param1 * param2
divide<type>()
除法
param1 / param2
modulus<type>()
模运算
param1 % param2
关系运算类

仿函数效果
equal_to<type>()
判断相等
param1 == param2
not_equal_to<type>()
判断不相等
param1 != param2
less<type>()
判断小于
param1 < param2
greater<type>()
判断大于
param1 > param2
less_equal<type>()
判断小于等于
param1 <= param2
greater_equal<type>()
判断大于等于
param1 >= param2
逻辑运算类

仿函数效果
logical_not<type>()
逻辑非
!param
logical_and<type>()
逻辑与
param1 && param2
logical_or<type>()
逻辑或
param1 || param2
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息