lambda函数的特点
简洁: 比起函数来说,要少写不少代码。
额外的功能: lambda可以访问作用域内的任何动态变量,要扑捉要使用的变量,把它的名称放在[ ] 就可以了。[z] 表示按值访问, [&z] 表示按引用访问 [=] 表示访问了所有的动态变量, [&]表示引用访问了所有的动态变量。
语法: [ 引用的变量](类型 变量){ } 返回的类型为自动推导出的结果。
判断是否能被3整除
bool f3(int x){ return x%3 == 0}
判断是否能被13整除
bool f13(int x){ return x%13 == 0}
如果用lambda函数
[](int x){ return x%3 == 0 }
[](int x){ return x%7 == 0 }
如果判断一些列的数当中有多少个可以分别被3和7整除,
int count3=0;
count3= std:count_if(numbers.begin(), numbers.end(), [](int x){ return x%3 == 0 } );
int count13=0;
count13= std:count_if(numbers.begin(), numbers.end(), [](int x){ return x%13 == 0 } );
采用以下方式,用一条语句就可以实现
int count3=0
int count13=0;
std:count_if(numbers.begin(), numbers.end(), [&](int x){ count3 += x%3 == 0; count13 += x%13 == 0; ); //引用count3 和 count13.