C++仿函数详解
2017-07-16 13:36
363 查看
仿函数,简单来说,使用一个类来实现一个函数,通过运算符重载,使得这个类有函数的对应功能。
举个简单仿函数实现的例子:
在STL有着众多的仿函数实现,主要有以下几类:
预定义仿函数:
算数类
关系运算类
逻辑运算类
举个简单仿函数实现的例子:
#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 |
相关文章推荐
- C++仿函数(functor)详解
- C++仿函数(functor)详解
- Ajax详解
- SPOOL参数详解
- Scala中隐式参数实战详解以及隐式参数在Spark中的应用源码解析之Scala学习笔记-50
- Linux tcpdump命令详解
- Android: 详解触摸事件如何传递 - 玲音 原文 http://www.cnblogs.com/superlcr/p/3946034.html
- Spark API 详解/大白话解释 之 groupBy、groupByKey
- 详解javascript闭包
- VC++ 访问数据库实例详解图解
- 深入C#中get与set的详解
- 3、grep,vim,压缩功能详解
- linux ssh 使用深度解析【key登录详解】
- git的submodule功能详解
- Fresceo使用详解--用Java代码实现xml配置的效果(二)
- Spring AOP 详解
- SPFA 算法详解( 强大图解,不会都难!)
- PopupWindow的使用详解
- Hibernate对象关系映射详解之“一对多”关系映射
- Java构造和解析Json数据的两种方法详解2