编程语言不断发展,甚至像 C++ 这样很久以前就确立了自己的语言。他们向标准库添加功能并进行其他更改以简化程序员在动态领域工作的工作。
创新互联专注于石阡企业网站建设,响应式网站设计,购物商城网站建设。石阡网站建设公司,为石阡等地区提供建站服务。全流程按需定制设计,专业设计,全程项目跟踪,创新互联专业和态度为您提供的服务
作为语言演变带来的更新的一部分,C++ 在其 2011 版本中增加了对 lambda 表达式的支持。
什么是 lambda 表达式,作为 C++ 程序员,您如何利用它来发挥自己的优势?
lambda 表达式也称为 lambda 函数。它是一个内联表达式,能够接受参数、执行操作和返回值,就像典型的函数一样。
您可以在另一个函数中使用 lambda 并将其分配给变量。Lamba 函数是在程序中定义匿名函数对象的一种实用方法。几乎每种语言都支持 lambda,尽管每种实现都各不相同。
Lambda 表达式在 C++ 中很容易使用。您可以在 C++ 中分解 lambda 表达式的语法,如下所示:
[capture_clause](parameters) options { expression_body; }
例如:
int val = 13;
auto sumPlusVal = [val](int a, int b) mutable noexcept ->int { return val + a + b ; };
sumPlusVal(2, 5); // 20
这段代码声明了sumPlusVal变量 auto,因为 lambda 表达式可以接受和返回任何数据类型。这让编译器在编译期间确定类型。
从上面的代码中,您可以看到一个 lambda 表达式包含几个部分,这些部分指定了它的操作方式。以下是每个组件的快速概述。
auto addTwo = [foo](){ return foo + 2; }; // by value
auto addThree = [&bar](){ return bar + 3; }; // by reference
auto addAllVal = [=](){ return foo + bar; }; // all by value
auto addAllRef = [&](){ return foo + bar; }; // all by reference
// create a variable in capture clause
auto createVarInCapture = [fooBar = foo + bar](){ return fooBar * 5; };
// no capture - returns error because foo is not accessible
auto errorExpression = [](){ return foo + 2; };
int value = 10;
// returns an error - value is a const inside the expression
auto decrement = [value](){ return --value; };
auto increment = [value]() mutable { return ++value; };
increment(); // 11
在代码中使用 lambda 函数有很多优点。除了提高开发速度和效率之外,您从 lambdas 获得的最大好处如下:
std::vectorarr = {2, 5, 1, 3, 4};
std::sort(arr.begin(), arr.end(), [](int a, int b){ return a < b; });
// arr = {1, 2, 3, 4, 5}
#include
using namespace std;
int main() {
// define a reusable lambda
auto addUp = [](auto a, auto b, auto c) noexcept {
cout << "Now adding up... " << a << ", " << b << " and " << c << endl;
return a + b + c ;
};
cout << addUp(22, 33, 44) << endl;
cout << addUp(string("Happy "), string("Birth"), string("day")) << endl;
cout << addUp(true, false, true) << std::endl; // executes as numbers(1 and 0)
}
该程序产生以下结果:
此示例演示了定义 lambda 是多么简单,以便您可以将其与任何类型一起使用。
lambda 表达式还有许多其他好处,随着程序结构变得越来越复杂,您会发现它们。事实上,C++ 程序员有时将 lambda 表达式称为闭包,因为它们是在代码中实现闭包的好方法。
如果要将现代 C++ 概念合并到代码库中,则应考虑使用 lambda 表达式。
当前题目:C++中Lambda表达式的快速指南
网页链接:http://www.shufengxianlan.com/qtweb/news13/22163.html
网站建设、网络推广公司-创新互联,是专注品牌与效果的网站制作,网络营销seo公司;服务项目有等
声明:本网站发布的内容(图片、视频和文字)以用户投稿、用户转载内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。电话:028-86922220;邮箱:631063699@qq.com。内容未经允许不得转载,或转载时需注明来源: 创新互联