大佬教程收集整理的这篇文章主要介绍了C++11 Lambda表达式(匿名函数)详解,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
[外部变量访问方式说明符] (参数表) -> 返回值类型
{
语句块
}
=
或&
,表示{}
中用到的、定义在{}
外面的变量在{}
中是否允许被改变。=
表示不允许,&
表示允许。当然,在{}
中也可以不使用定义在外面的变量。“-> 返回值类型”可以省略。[=] (int x,int y) -> bool {return x%10 < y%10; }
Lambda 表达式实际上是一个函数,只是它没有名字。下面的程序段使用了上面的 Lambda 表达式:int a[4] = {11,2,33,4}; sort(a,a+4,[=](int x,int y) -> bool { return x%10 < y%10; } ); for_each(a,[=](int X) { cout << x << " ";} );这段程的输出结果是:
#include <iostream> #include <algorithm> using namespace std; int main() { int a[4] = { 1,3,4 }; int @R_706_10586@l = 0; for_each(a,a + 4,[&](int & X) { @R_706_10586@l += x; x *= 2; }); cout << @R_706_10586@l << endl; //输出 10 for_each(a,[=](int X) { cout << x << " "; }); return 0; }程序的输出结果如下:
[&]
表示该 Lambda 表达式中用到的外部变量 @R_706_10586@l 是传引用的,其值可以在表达式执行过程中被改变(如果使用[=]
,编译无法通过)。该 Lambda 表达式每次被 for_each 执行时,都将 a 中的一个元素累加到 @R_706_10586@l 上,然后将该元素加倍。#include <iostream> using namespace std; int main() { int x = 100,y=200,z=300; auto ff = [=,&y,&z](int n) { cout <<x << endl; y++; z++; return n*n; }; cout << ff(15) << endl; cout << y << "," << z << endl; }程序的输出结果如下:
以上是大佬教程为你收集整理的C++11 Lambda表达式(匿名函数)详解全部内容,希望文章能够帮你解决C++11 Lambda表达式(匿名函数)详解所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。