Lambda函数
Lambda函数
案例: 利用STL算法generate()生成1000个随机数
1 |
|
利用count_if(),计算满足不同条件的个数。
函数指针
1 | bool f3(int x) {return x%3 == 0;} |
函数符
函数符是一个类对象,只是重载了operator()().
1 | class f_mod |
Lambda函数
使用[]替代了函数名
1 | int count = std::count_if(numbers.begin(),numbers,end(),[](int x){return x%3==0}); |
仅仅当lambda表达式完全由一条返回语句组成时,自动类型的推断才管用,否则,需要使用新增的返回类型后置语法
[](double x)->double{int y=x;return x-y;}
Lambda额外功能
- 可以给Lambda指定一个名称
1 | auto fun = [](int x){return x%3==0;}; |
- Lambda可访问作用域内的任何动态变量,要捕获要使用的变量,可将其名称放在中括号内。如果只定义了变量名,如[z],将只能按值访问变量z,如果在名称前面加上&,如[&count],则只能按引用访问count。[&]可以按照引用访问所有的动态变量,而[=]能按值访问所有的动态变量。
- [ted,&ed] :能够按照访问ted以及按照引用访问&ed