C&C++   发布时间:2022-04-03  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了C++ lambda表达式(详解版)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
Lambda 表达式是从类创建函数对象的精简方式。这里讲的类,它仅有的成员就是函数调用运算符。

Lambda 表达式取消了类声明,并且使用了精简的符号来表示函数调用运算符的逻辑。例如,以下函数对象的Lambda表达式可以计算两个整数之和:

[](int a,int b) { return x + y; }

以下函数对象的 Lambda 表达式可以确定某个整数是否为偶数:

[](int a) { return a % 2 == 0; }

以下 Lambda 表达式釆用了一个整数作为输入,然后打印该整数的平方值:

[](int a) { cout << a * a << " "; }

以上显示的 Lambda 表达式其实是函数的基础定义,但函数名称和返回类型则使用 一对空白方括号[]来替代。Lambda 表达式经常釆用以下形式:

[捕获从句](形参列表){函数体}

捕获从句是 Lambda 表达式作用域中的变量列表,可以从 Lambda 表达式的函数体访问。这与常规函数定义列出所有可以访问的全局变量相似。本节所使用的 Lambda 表达式均不使用捕获从句,所以对这个概念不做进一步的讨论。

Lambda 表达式通过在它后面放置一个真实形参列表来调用。例如,以下代码段将打印值 7,也就是变量 x 和 y 之和:
int x = 2;
int y = 5;
cout << [](int a,int b) { return a + b;} (x,y);
以下代码段将按降序对数组排序,它使用了 Lambda 表达式来代替函数对象作为排序函数的第 3 个参数:
double d_values[]{ 12.7,45.9,6.9};
//以降序排序数组
sort( begin(d_values),end(d_values),[](auto a,auto b) {return a > b;});
//打印数组
for (auto x : d_values)
{
    cout << x << " ";
}
因为 Lambda 表达式是函数对象,所以,可以将 Lambda 表达式赋值给一个类型适合的变量,并通过变量名来调用它。

例如,可以按如下方式给 Lambda 表达式分配一个名称

auto compare = [](auto a,auto b) {return a > b;};

这样做可以将代码分割成更小的块,使它更易读。以下就是将上面的代码段重新编写,引用变量(变量的值为 Lambda 表达式)之后的结果:
double d_values[]{ 12.7,6.9};
// Lambda表达式
auto compare = [](auto a,auto b) {return a > b;};
//以降序排序数组
sort( begin(d_values),comparE);
//打印数组
for (auto x : d_values)
{
    cout << x << " ";
}

大佬总结

以上是大佬教程为你收集整理的C++ lambda表达式(详解版)全部内容,希望文章能够帮你解决C++ lambda表达式(详解版)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: