#include<vector>
#include<stdio.h>
#include<algorithm>
using namespace std;
/*
lambda表达式:
[capture](parameters)->return_type {body}
----- -------- ---------- ---
捕捉式 传入的参数 返回类型 函数体
1.捕捉式:lambda的开头,[=],[&]分别表示以值/引用的方式捕获周围的变量
2.传入的参数:调用时传入的参数(ex:[](int val){}(4) 在函数体内val的值便为4)
3.body中返回的类型(可省)
*/
void func1() {
vector<int> v;
v.push_back(1);
v.push_back(2);
printf("---test1------\n");
for_each(v.begin(), v.end(), [](int val)
{
printf("%d ", val);
});
printf("\n----------\n");
}
void func2() {
int a = 3;
int b = 3;
printf("------test2------\n");
int c = [a,&b](int val) mutable{
a = a + 1; //error when don't add mutable keyword
b = b + 1;
return a + b + val;
}(3);
printf("a b c: %d %d %d", a, b, c); //res: 3,4,11
printf("\n----------\n");
}
int main() {
func1();
func2();
}