lamda 表达式

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

  1. #include <iostream>
  2. #include <algorithm>
  3. using namespace std;
  4. int main()
  5. {
  6. int a[4] = { 1, 2, 3, 4 };
  7. int total = 0;
  8. for_each(a, a + 4, [&](int & x) { total += x; x *= 2; });
  9. cout << total << endl; //输出 10
  10. for_each(a, a + 4, [=](int x) { cout << x << " "; });
  11. return 0;
  12. }

程序的输出结果如下:
10
2 4 6 8

  1. #include <iostream>
  2. using namespace std;
  3. int main()
  4. {
  5. int x = 100,y=200,z=300;
  6. auto ff = [=,&y,&z](int n) {
  7. cout <<x << endl;
  8. y++; z++;
  9. return n*n;
  10. };
  11. cout << ff(15) << endl;
  12. cout << y << "," << z << endl;
  13. }

100
225
201, 301

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值