当前位置: 首页> 房产> 家装 > 正版app下载_苏州网络公司机房建设_啥都能看的浏览器_互联网营销师在哪里报名

正版app下载_苏州网络公司机房建设_啥都能看的浏览器_互联网营销师在哪里报名

时间:2025/8/23 9:17:43来源:https://blog.csdn.net/m0_62407354/article/details/142812504 浏览次数:0次
正版app下载_苏州网络公司机房建设_啥都能看的浏览器_互联网营销师在哪里报名

Lambda 表达式是 C++11 引入的一种匿名函数的方式,它允许你在需要函数的地方内联地定义函数,而无需单独命名函数

[capture clause](parameters) -> return_type {// 函数体
// 可以使用捕获列表中的变量
return expression; // 可选的返回语句
}
  • 捕获列表(Capture clause):用于捕获外部变量,在 Lambda 表达式中可以访问这些变量。捕获列表可以为空,也可以包含变量列表 [var1, var2, ...]。
  • 参数列表(Parameters):与普通函数的参数列表类似,可以为空或包含参数列表param2, ...)。
  • 返回类型(Return type):Lambda 表达式可以自动推断返回类型auto,也可以显式指定返回类型 > return_type。如果函数体只有一条返回语句,可以省略返回类型。
  • 函数体(Body):Lambda 表达式的函数体,包含需要执行的代码。
int main(int argc, char *argv[])
{int x=10,y=200;auto add = [](int a,int b)->int{return a+b;};int c=add(x,y);cout<< c;return 0;}
int main(int argc, char *argv[])
{int x=10,y=200;auto max = [](int a,int b)->auto{return a  > b;};cout << max;return 0;}

lambda调用错误写法:

int main(int argc, char *argv[])
{int x=10,y=200;auto add = [x,y]()->int{return x+y;};cout << add;return 0;}

正确写法: 

int main(int argc, char *argv[])
{int x=10,y=200;auto add = [x,y]()->int{return x+y;};cout << add();return 0;}

 这种方式捕获变量是不能修改变量的,只可读

int main(int argc, char *argv[])
{int x=10,y=200;auto add = [x,y]()->int{//x++;//x = 15;//这种方式捕获变量是不能修改变量的,只可读return x+y;};int ret = add();cout << ret;return 0;}
捕获形式含义
[  ]空捕获(全局和局部静态仍然可见)
[=]隐式值捕获,值捕获lambda前面的变量
[names]一个逗号分隔的捕获变量列表
[&]隐式引用捕获
[&,a]除了a外的所有外部变量都为引用
[&x,y]按引用捕获x,按值捕获y
int main(int argc, char *argv[])
{static int x=10,y=200;auto add = []()->int{return x+y;};int a=10;int ret = add();cout << ret;return 0;}
int main(int argc, char *argv[])
{int x=10,y=200;auto add = [&,y]()->int{x++;return x+y;};int a=10;int ret = add();cout << ret;return 0;}

int main(int argc, char *argv[])
{int x=10,y=200;auto add = [&x,y]()->int{// 按引用捕获x,按值捕获yx++;return x+y;};int a=10;int ret = add();cout << ret;return 0;}

关键字:正版app下载_苏州网络公司机房建设_啥都能看的浏览器_互联网营销师在哪里报名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: