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

C++11 Lambda表达式(匿名函数)

2017-07-28 11:55 309 查看
http://www.cnblogs.com/RainyBear/p/5733399.html
http://blog.163.com/lvan100@yeah/blog/static/68117214201392132341151/
匿名函数,好屌的样子。

Lambda表达式的引入标志,在‘[]’里面可以填入‘=’或‘&’表示该lambda表达式“捕获”(lambda表达式在一定的scope可以访问的数据)的数据时以什么方式捕获的,‘&’表示一引用的方式;‘=’表明以值传递的方式捕获,除非专门指出。

Lambda函数可以引用在它之外声明的变量. 这些变量的集合叫做一个闭包. 闭包被定义在Lambda表达式声明中的方括号[]内. 这个机制允许这些变量被按值或按引用捕获.下面这些例子就是:

[]        //未定义变量.试图在Lambda内使用任何外部变量都是错误的.
[x, &y]   //x 按值捕获, y 按引用捕获.
[&]       //用到的任何外部变量都隐式按引用捕获
[=]       //用到的任何外部变量都隐式按值捕获
[&, x]    //x显式地按值捕获. 其它变量按引用捕获
[=, &z]   //z按引用捕获. 其它变量按值捕获


#include "stdafx.h"

#include <iostream>

using namespace std;

int main()

{

int n = 10;

auto f = [&]()
{
return ++n;
};

cout << f() << endl;
cout << n << endl;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: