形式: [捕获列表](参数列表)->返回值类型{函数体} 1. 最简形式只有捕获列表与函数[]{} 2. 当没有返回值类型且函数仅仅只有return语句可以自动推导返回类型,否则一律返回void 捕获列表: 只能捕获当前函数的非static变量,对不在该函数中的变量可以直接使用,无需捕获,且可修改 1. 值捕获(默认方式)[var],在表达式创建时捕获, 不可以在函数体中更改该变量值,默认只读,如要修改,在参数列表后加mutable,多个捕获变量,用逗号进行隔开 2. 引用捕获 [&val],多个变量用逗号进行隔开 3. 隐式捕获 [=]:全部以值的方式捕获 [&]:全部以引用的方式进行捕获 4. 隐式与显示混合捕获: [&, var]:引用隐式捕获与值捕获混合,[=,&var]:值隐式捕获与值捕获相结合,“=、&“符号必须放在最前面 代码样例 #include <bits/stdc++.h> using namespace std; int main(){ vector<int> num = {1,-1,-2}; for_each(num.begin(), num.end(), [](int& a){ a = a < 0 ? -a : a; }); for(auto value : num)cout<<value<<" "; cout<<endl; return 0; }