关于Lambda的语法(C++)
定义:一个lambda表达式表示一个可以调用的代码单元
可调用对象:函数、函数指针、lambda、重载函数调用运算符的类
代码:
一些注意要点:
-如果lambda函数体包含任何单一return语句之外的内容,且未指定返回类型,则返回void
-隐式捕获、显示捕获:
[&,identifier_list]: identifier_list是逗号分隔的列表,包括0个或者多个所在函数的变量,这些变量采用捕获的方式,任何隐式捕获的变量都采用引用方式捕获,identifier_list前不能使用&,[=,identifier_list]相反
-返回类型:transform(vi.begin(),vi.end(),vi.begin().[](int i){ if(i < 0) return -i; else return -i});会出现编译错误,因为有return 之外的句子,默认void但是返回了int
更正:使用尾置返回类型,transform(vi.begin(),vi.end(),vi.begin().[](int i)->int { if(i < 0) return -i; else return -i});
[1]: C++ primer 第五版