新建门户网站的建设自查,郑州网站定制,360 的网站链接怎么做,选服务好的网站建设公司1.定义 lambda匿名函数的语法格式#xff1a;
[外部变量访问方式说明符](参数)mutablenoexcept/throw()-返回值类型
{函数体;
};其中各部分的含义分别为#xff1a; a.[外部变量方位方式说明符] []方括号用于向编译器表明当前是一个lambda表达式#xff0c;其不能被省略…1.定义 lambda匿名函数的语法格式
[外部变量访问方式说明符](参数)mutablenoexcept/throw()-返回值类型
{函数体;
};其中各部分的含义分别为 a.[外部变量方位方式说明符] []方括号用于向编译器表明当前是一个lambda表达式其不能被省略。在方括号内部可以注明当前lambda函数的函数体中可以使用哪些“外部变量”。所谓外部变量指的是和当前lambda表达式位于同一作用域内的所有局部变量。 b.(参数) 和普通函数的定义一样lambda匿名函数也可以接收外部传递的多个参数。和普通函数不同的是如果不需要传递参数可以连同()小括号一起省略 c.mutable 此关键字可以省略如果使用则之前的()小括号将不能省略参数个数可以为0。默认情况下对于以值传递方式引入的外部变量不允许在lambda表达式内部修改它们的值可以理解为这部分变量都是const常量。而如果想修改它们就必须使用mutable关键字。注意:对于以值传递方式引入的外部变量lambda表达式修改的是拷贝的那一份并不会修改真正的外部变量 d.noexcept/throw() 可以省略如果使用在之前的()小括号将不能省略参数个数可以为0。默认情况下lambda函数的函数体中可以抛出任何类型的异常。而标注noexcept关键字则表示函数体内不会抛出任何异常使用throw()可以指定lambda函数内部可以抛出的异常类型。 e.-返回值类型 指明lambda匿名函数的返回值类型。 如果lambda函数体内只有一个return语句或者该函数返回void则编译器可以自行推断出返回值类型此情况下可以直接省略-返回值类型。 f.函数体和普通函数一样lambda匿名函数包含的内部代码都放置在函数体中。该函数体内除了可以使用指定传递进来的参数之外还可以使用指定的外部变量以及全局范围内的所有全局变量。 2.eg:
#includeiostream
#includealgorithm
using namespace std;
int main()
{int num[4] {4,2,3,1};
//对a数组中的元素进行排序sort(num,num4,[](int x,int y)-bool{return xy;});for(int n:num) {coutn;//1234}return 0;
}#includeiostream
#includealgorithm
using namespace std;
bool cmp(int x,int y) {return xy;
}
int main()
{int num[4] {4,2,3,1};
//对a数组中的元素进行排序sort(num,num4,cmp);for(auto n:num) {coutn;//1234}return 0;
}