lambda表达式

[capture list] (parameter list) -> return type

{ function body; };

capture list 捕获列表

[] // 没有定义任何变量。使用未定义变量会引发错误。
[x, &y] // x以传值方式传入(默认),y以引用方式传入。
[&] // 任何被使用到的外部变量都隐式地以引用方式加以引用。
[=] // 任何被使用到的外部变量都隐式地以传值方式加以引用。
[&, x] // x显式地以传值方式加以引用。其余变量以引用方式加以引用。
[=, &z] // z显式地以引用方式加以引用。其余变量以传值方式加以引用。

int a = 10;

auto f = [&a](int x)->int{

  a = 20;

  return a+x;

}

cout << a << endl;//10

cout << f(10) << endl;//30

cout << a << endl;//20

 

posted @ 2023-05-07 22:16  muzixuanxuanxuan  阅读(10)  评论(0)    收藏  举报