c++ std::function
std::function 是一个模板类,用于封装各种类似于函数这样的对象,例如普通函数,仿函数,匿名函数等等。其强大的多态能力,让其使用只依赖于调用特征。在程序的升级中,可以实现一个调用表,以兼容新旧不同的实现方式。
例如:
#include <iostream>
#include <functional>
#include <list> using namespace std; //普通函数
int c_fun_add(int a, int b)
{
return a + b;
} //模板函数
template <typename T>
T t_fun_add(T a, T b)
{
return a + b;
} //仿函数
class functor_add
{
public:
int operator()(int a, int b)
{
return a + b;
}
}; //匿名函数,lambda表达式
auto l_fun_add = [](int a, int b)
{
return a + b;
}; //成员函数
class FunClass
{
public:
static int s_fun_add(int a, int b)
{
return a + b;
} int n_fun_add(int a, int b)
{
return a + b;
}
}; int _tmain(int argc, _TCHAR* argv[])
{
functor_add functor;
FunClass funcls;
std::list<std::function<int(int, int)>> call_tables;
call_tables.push_back(c_fun_add);
call_tables.push_back(t_fun_add<int>);
call_tables.push_back(functor);
call_tables.push_back(l_fun_add);
call_tables.push_back(funcls.s_fun_add);
call_tables.push_back(bind(&FunClass::n_fun_add, &funcls, placeholders::_1, placeholders::_2)); for (const auto& fun : call_tables)
{
cout << fun(, ) << endl;
}
getchar();
return ;
}
c++ std::function的更多相关文章
- C++11中的std::function
看看这段代码 先来看看下面这两行代码: std::function<void(EventKeyboard::KeyCode, Event*)> onKeyPressed; std::fun ...
- C++11之std::function和std::bind
std::function是可调用对象的包装器,它最重要的功能是实现延时调用: #include "stdafx.h" #include<iostream>// std ...
- typedef 函数指针 数组 std::function
1.整型指针 typedef int* PINT;或typedef int *PINT; 2.结构体 typedef struct { double data;}DATA, *PDATA; //D ...
- callable object与新增的function相关 C++11中万能的可调用类型声明std::function<...>
在c++11中,一个callable object(可调用对象)可以是函数指针.lambda表达式.重载()的某类对象.bind包裹的某对象等等,有时需要统一管理一些这几类对象,新增的function ...
- std::bind和std::function
std::bind 用于绑定一个函数,返回另外一种调用方式的函数对象 ,可以改变参数顺序 和个数,特别是在多线程的程序中,经常用它将函数进行包装,然后打包发送给工作线程,让工作线程去执行我们的任务. ...
- std::function,std::bind
std::function 和 std::bind 标准库函数bind()和function()定义于头文件中(该头文件还包括许多其他函数对象),用于处理函数及函数参数.bind()接受一个函数(或者 ...
- C++11 std::function用法
转自 http://www.hankcs.com/program/cpp/c11-std-function-usage.html function可以将普通函数,lambda表达式和函数对象类统一起来 ...
- 【转】C++11中的std::function
原文地址:http://www.jellythink.com/archives/771 看看这段代码 先来看看下面这两行代码: std::function<void(EventKeyboard: ...
- std::function,std::bind复习
#include <iostream> #include <functional>//std::bind返回函数对象 void fun1(int a, int b) { std ...
- C++中的仿函数,std::function和bind()的用法
1.仿函数:又叫std::function,是C++中的一个模板类 2.C语言中的函数指针: int add(int a,int b) { return a+b; } typedef int (*f ...
随机推荐
- Python 函数(一)
Python3 函数(基本概念) 1.概念: 函数是组织好的,可重复使用的,用来实现单一,或相关联功能的代码段:通过函数,可以对特定功能的代码进行封装,实现代码的复用. 2. 5.参数传递 (1) P ...
- DB2创建function(一)
案例一:根据传入的值返回一个满足条件的值.适用于查询的字段(经过较复杂逻辑得出) CREATE FUNCTION "FAS"."GET_ALL_NAME" ( ...
- 数据结构与算法之Stack(栈)的应用——用stack实现一个计算器-/bin/calc.dart
计算器的bin/calc.dart 可执行代码: import 'dart:io'; import 'package:data_struct/stack/sample/calculator.dart' ...
- 20155232《网络对抗》Exp7 网络欺诈防范
20155232<网络对抗>Exp7 网络欺诈防范 一.实践内容 本实践的目标理解常用网络欺诈背后的原理,以提高防范意识,并提出具体防范方法.具体实践有 (1)简单应用SET工具建立冒名网 ...
- mfc CListCtrl
了解CListCtrl属性 了解CListCtrl常用成员函数 代码示例 一.CListCtrl常用属性 View:视图方式;.大(标准)图标2.小图标3.列表4.报表 Sort:排序; No Scr ...
- 比较不错的Nosql文章
1. NoSQL简单介绍 2. NoSQL初探之人人都爱Redis:(1)Redis简介与简单安装 3. NoSQL初探之人人都爱Redis:(2)Redis API与常用数据类型简介 4. NoSQ ...
- 微信小程序之页面传值(路由、页面栈、globalData、缓存)
1. 通过url带参数传递 1.1 固定参数传递 例如,从 list 页面到 detail 页面, 传递一个或多个固定值 list页面传值: <!--pages/list/list.js--&g ...
- JS基础内容小结(event 鼠标键盘事件)(三)
var ev=ev||event 兼容性处理 得到焦点为 onfocus 失去焦点 onblur return false能阻止部分函数的执行 obj.select 选择指定元素里的文本内容 ———— ...
- [Direct2D开发] 绘制网格
转载请注明出处:http://www.cnblogs.com/Ray1024 一.引言 最近在使用Direct2D进行绘制工作中,需要实现使用Direct2D绘制网格的功能.在网上查了很多资料,终于实 ...
- sudo apt-get update 去除设置的代理
今天想装个软件(wine),使用 sudo apt-get update 命令时,发现给出很多Ign 语句,总出现 Connecting to proxy.http://10.0.126.1:1312 ...