[=] (int x) mutable throw() -> int { // 函數內容 int n = x + y; return n; }请问以下正确的是()
lambda的定义和使用是在同一个地方的,对于接受函数指针或函数符的函数,可使用匿名函数定义(lambda)作为其参数,即可封装传递给算法的数行简短代码;
lambad可访问作用域内的任何动态变量;要捕获要使用的变量,可将其名称放到中括号内,只指定变量名,如[z],将按值访问变量,前加&,按引用访问,[&]访问所有引用变量,[=]能按值访问所有动态变量,也可混合使用。[ ]仅表示lambda引导符;
bool f3(int x){return x%3==0;}对应的lambda为 [ ] (int x) {return x%3==0;} 使用[ ]代替了函数名,没有声明返回类型,返回类型相当于使用decltyp根据返回值自动推断,如果lambda不包含返回语句,推断出的返回语句为void并且仅当表达式完全由一条返回值语句构成时,自动推断才有效,否则要新增返回类型后置语法:[ ] (double x) ->double {int y=x; return x-y;}
lambda常用于封装传给算法的数行简短代码,或是用于解决重复代码的问题