lambda表达式,也叫匿名函数,本质上就是一个函数,只是这个函数没有名字。函数没有名字有什么好处呢?写得比较快啊。
【需要注意发音,这个单词lambda中间的b是不发音的。】
lambda表达式的完整形式很长很繁杂,实际应用中不可能用得太繁杂。因为又繁杂又没有函数名字会造成理解上的困难,没有必要了。
常见的简化版的lambda表达式有三个要素:中括号、小括号、大括号
[](){}
中括号表示外部变量的传递方式。小括号表示参数。大括号表示语句。举个例子,比如我想写一个函数,返回一个已知变量m的n倍的值。这里的m就是外部变量,n则是参数。
int m = 10;
auto func2time = [=](int n){return m*n; };
printf("m*2=%d", func2time(2));
中括号里面的等号表示m是以值传递的方式进行传递。return暗示了这个lambda表达式是有返回值的。