C++11--lambda表达式
2017-09-22 09:22
239 查看
1、综述
lambda表达式就是一个没有名称的函数,即匿名函数,它可以在函数内部定义,而且lambda必须使用尾置返回来指定函数返回类型。lambda表达式的形式为:[捕获列表] (参数列表) -> 返回类型{ 函数体 },其中“捕获列表”是表达式所在函数中定义的局部变量的列表,可以为空,eg:
View Code
3、lambda与函数
对于那些只在一两个地方使用的简单操作,可以直接使用lambda表达式。如果一个操作会被多个地方会使用,或者操作很复杂(包含多条语句),最好还是定义一个函数来使用。
lambda表达式捕获变量的功能与bind绑定参数有相似的效果。
对于子函数可以使用父函数中的局部变量这种行为,我们可以称做“闭包”,可见lambda表达式和bind绑定参数都可以实现“闭包”行为。
lambda表达式就是一个没有名称的函数,即匿名函数,它可以在函数内部定义,而且lambda必须使用尾置返回来指定函数返回类型。lambda表达式的形式为:[捕获列表] (参数列表) -> 返回类型{ 函数体 },其中“捕获列表”是表达式所在函数中定义的局部变量的列表,可以为空,eg:
int main() { int n = 10; auto func1 = [=]()mutable{ return ++n;}; //n是隐式值捕获 auto func2 = [&]() {return ++n;}; //n是隐式引用捕获 int i = 1, j = 2; auto func3 = [=, &i, &j]() {return n * i * j;}; //n是隐式值捕获,i和j是显示引用捕获 auto func4 = [&, i, j]() {return n * i * j;}; //n是隐式引用捕获,i和j是显示值捕获 return 0; }
View Code
3、lambda与函数
对于那些只在一两个地方使用的简单操作,可以直接使用lambda表达式。如果一个操作会被多个地方会使用,或者操作很复杂(包含多条语句),最好还是定义一个函数来使用。
lambda表达式捕获变量的功能与bind绑定参数有相似的效果。
对于子函数可以使用父函数中的局部变量这种行为,我们可以称做“闭包”,可见lambda表达式和bind绑定参数都可以实现“闭包”行为。
相关文章推荐
- C++11 新特性之 Lambda表达式
- 【c++11】Lambda表达式
- C++11新增特性Lambda表达式
- C++11带来的lambda表达式
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- c++11 lambda表达式
- C++11中的匿名函数(lambda函数,lambda表达式)
- 【C++11】Lambda表达式
- C++11 lambda表达式
- C++11新特性(3) lambda表达式(1)
- C++11 lambda表达式(19篇C++11文章)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11 lambda表达式(19篇C++11文章)
- C++11 lambda表达式
- C++11 lambda表达式在for_each和transform算法下的使用
- C++11: lambda表达式
- C++11中的匿名函数(lambda函数,lambda表达式)
- C++11 lambda表达式