c++11学习笔记之function函数

来源:互联网 发布:简明python教程3 编辑:程序博客网 时间:2024/05/20 19:32

【说明】

对于相同参数和返回类型但调用方式不同的可调用对象(函数,函数指针,lambda表达式,bind对象,重载了函数调用运算符的类)

需要有一个办法把他们统一化,让他们可以转换成同一个泛型,提供更大的灵活性。标准库引进了function函数。


【使用】

它需包含头文件

#include <functional>


定义如下:

function<T> f;  // f是一个用来存储可调用对象的空function,这些可调用对象的形式都应与函数类型T相同。

用一个通过map来统一调用的列子来说明情况:

//普通函数int add(int i, int j){return i + j;}//lambdaauto mod = [](int i, int j){return i%j; };//函数对象struct divide{int operator()(int d1 ,int d2){return d1 / d2;}};int test_main(){map < string, function<int(int, int)>> map;map.insert({ "+", add });map.insert({ "%", mod });map.insert({ "/", divide() });cout << map["+"](20, 10) << endl;cout << map["%"](20, 10) << endl;cout << map["/"](20, 10) << endl;return 0;}

由于使用了function,类似int(int,int)的不同调用方式都可以统一管理了。


0 0
原创粉丝点击