lambda匿名函数的定义
定义一个lambda匿名函数的语法格式如下:
[外部变量访问方式说明符](参数) mutable noexcept -> 返回值类型
{
函数体;
};
各部分的含义如下:
- 【外部变量访问方式说明符】 [ ]方括号用于向编译器表面当前是一个lambda表达式,其不能被省略。在方括号内部,可以注明当前lambda函数的函数体中可以使用那些“外部变量”。
-
所谓外部变量,指的是和当前lambda表达式位于同一作用域内的所有局部变量。
-
(参数) 和普通函数的1定义一样,lambda匿名函数也可以接受外部传递的多个参数。和普通函数不同的是,如果不需要传递参数,小括号()也可以一起省略。
-
mutable 可选,如果使用,则之前的()小括号不能省略(参数个数可以为0)。默认情况下,对于以值传递方式引入的外部变量,不允许在lambda表达式内部修改他们的值(可以理解为这部分变量都是const常量)。而如果想修改他们,就必须使用mutable关键字。
noexcept的用法
1.位置:放在参数列表后、mutable之后(如果有mutable)、返回类型前。
2.写法:
- 无条件不抛异常:【捕获】(参数)noexcept{...}
- 条件性不抛异常:【捕获】(参数)noexcept(表达式){...}(表达式为真时才不抛)
3.注意:此乃“不抛异常”的承诺,若实际抛了,程序直接崩溃。