c++ function &n lamda表达式简单使用
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了c++ function &n lamda表达式简单使用,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2091字,纯文字阅读大概需要3分钟。
内容图文
![c++ function &n lamda表达式简单使用](/upload/InfoBanner/zyjiaocheng/1309/bb8cd17b00a94682b4e45550d3645616.jpg)
function 定义一个可调用实体
lamda相当于闭包,匿名函数,OC中的block
下面是简答使用的一个demo
function <int(int, int)> myfunc;//入参是int,int,出参是int
myfunc = [](int x,int y)->int{
return x + y;
};//给func赋值
cout << myfunc(10, 20) << endl;//调用
#include "stdafx.h" #include <iostream> #include <map> #include <functional> usingnamespace std; // 普通函数int add(int i, int j) { return i + j; } // lambda表达式 auto mod = [](int i, int j) {return i % j; }; // 函数对象类struct divide { intoperator() (int denominator, int divisor) { return denominator / divisor; } }; ///////////////////////////SubMain//////////////////////////////////int main(int argc, char *argv[]) { // 受限的map map<char, int(*)(int, int)> binops_limit; binops_limit.insert({ ‘+‘, add }); binops_limit.insert({ ‘%‘, mod }); // 错误 1 error C2664: “void std::_Tree<std::_Tmap_traits<_Kty,_Ty,_Pr,_Alloc,false>>::insert(std::initializer_list<std::pair<const _Kty,_Ty>>)”: 无法将参数 1 从“initializer-list”转换为“std::pair<const _Kty,_Ty> &&” // binops_limit.insert({ ‘%‘, divide() }); // 更灵活的map map<char, function<int(int, int)>> binops = { { ‘+‘, add }, { ‘-‘, minus<int>() }, { ‘*‘, [](int i, int j) {return i *j; } }, { ‘/‘, divide() }, { ‘%‘, mod }, }; cout << binops[‘+‘](10, 5) << endl; cout << binops[‘-‘](10, 5) << endl; cout << binops[‘*‘](10, 5) << endl; cout << binops[‘/‘](10, 5) << endl; cout << binops[‘%‘](10, 5) << endl; function <int(int, int)> myfunc; myfunc = [](int x,int y)->int{ return x + y; }; cout << myfunc(10, 20) << endl; system("pause"); return0; }
ps:lamda捕获参数的方法
在Lambda表达式的函数体内,是不能够访问到外部的变量的,如果想要使用函数体外定义的变量,就需要将它们进行"捕获",
capture, [=], [=,&], [&], [this]
[ ]:空捕获列表,即lambda表达式不能够使用所在函数中的变量
[=]:值捕获,即lambda表达式可以以拷贝的方式访问到函数中变量的值
[&]:引用捕获,即lambda表达式中所使用的其所在函数中的变量均是引用方式
当我们不希望在捕获的时候将所有的变量都捕获的时候,我们可以使用如下的方
[=, &foo] 通过变量的拷贝捕获,但是用foo变量的引用捕获
[bar] 通过复制捕获,不要复制其他
[this] 捕获this指针对应成员
原文:http://www.cnblogs.com/hellozhuzi/p/5719926.html
内容总结
以上是互联网集市为您收集整理的c++ function &n lamda表达式简单使用全部内容,希望文章能够帮你解决c++ function &n lamda表达式简单使用所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。