lambda出现的原因是有时候使用简单的函数时如果定义一个相应的函数进行调用会显得比较麻烦,既要函数定义也需要函数声明(如果需要的话),这样对于简单函数的代码量太大,这个时候就可以使用lambda,它定义了一个匿名的函数,只调用一次。
如图,lambda表达式由下面几个部分构成:
- lambda-introducer (捕获字段)----------------[]内可以是=或者&,如果是=,表示按值传递,如果是&,表示是引用
- lambda-parameter-declaration-list (变量列表)--------------你需要传递的参数
- mutable-specification (捕获的变量可否修改)-------变量是否可以修改
- exception-specification (异常设定)------------异常的设置
- lambda-return-type-clause (返回类型)-----------返回的值的类型
- compound-statement (函数体)----------------函数体
- 举个例子
- int z=[=](int x,int y) mutable throw()->int { x=y; return x*y;}(7,8);那么输出的结果是64,因为在函数中7,8分别表示函数参数列表中的x和y,在函数中x=y,那么此时的x=y=8,因此结果返回为x*x为64。