码迷,mamicode.com
首页 > 其他好文 > 详细

lambda表达式

时间:2015-10-28 14:16:08      阅读:145      评论:0      收藏:0      [点我收藏+]

标签:

lambda表达式:可以让代码看起来更整洁,有些结构简单且用的次数少的函数可以用lambda表达式替代,

通常结构是这样的[捕获列表](参数列表){函数部分}

捕获列表:

lambda表达式如果在一个函数里面,如果想要使用函数里面的变量的话,那么必须要将使用的变量写在捕获列表里面;

也就是说:

void cmp(){
  int a;
  [](){return a;};
}

是通不过编译的

只能这样:

void cmp(){
  int a;
  [](){return a;};
}

如果lambda表达式在类的里面的话,原则如上。

如果表达式写在类的函数里面的话,那么是不能直接使用类里面的变量的,通过试验。

经过捕获,表达式只能使用上一层里面的变量。

全局变量随便使用。

如果不在捕获列表里面声明的话,lambda表达式不能使用任何局部变量。

捕获列表有以下几种:

值捕获都不可以改变变量

[]          空捕获,不能使用函数里面的变量。

[names]       names是逗号分割的捕获类表。

[&]          隐式捕获,所有捕获都以引用的方式。

[=]          隐式捕获,拷贝所有实体的值。

[&, names]      names表示的采用值捕获,其他的以引用方式捕获。

[=,names]      规则和上面相反。

 

传参列表:(相当于函数的参数列表)

lambda表达式不允许有默认参数,也就是形参和实参的数量必须相等。

 

lambda表达式

标签:

原文地址:http://www.cnblogs.com/icodefive/p/4916912.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!