关于常用的Lambda(拉姆达)表达式

编程入门 行业动态 更新时间:2024-10-28 12:23:33

关于常用的Lambda(拉姆达)<a href=https://www.elefans.com/category/jswz/34/1771310.html style=表达式"/>

关于常用的Lambda(拉姆达)表达式

ISO C++ 11 标准的一大亮点是引入Lambda表达式。基本语法如下: [capture list] (parameter list) ->return type { function body }   其中除了“[ ]”(其中捕获列表可以为空,可以是this)和“复合语句”(相当于具名函数定义的函数体),其它都是可选的。它的类型是唯一的具有成员operator()的非联合的类类型,称为闭包类型(closure type):闭包是可以包含自由(未绑定到特定对象)变量的代码块。   示例一个触摸开始事件:
rockerRangeEvent->onTouchBegan=[this](Touch* touch,Event* e){return false;
};
  C++中,一个lambda表达式表示一个可调用的代码单元。我们可以将其理解为一个未命名的内联函数。它与普通函数不同的是,lambda必须使用尾置返回来指定返回类型,用于确定表达式是否再往下执行?   一个更清楚详细的示例:例如调用<algorithm>中的std::sort,ISO C++ 98 的写法是要先写一个compare函数
boolcompare(int&a,int&b)
{
    return a>b;//降序排序
}

然后,再这样调用:  
sort(a,a+n,compare);
  然而,用ISO C++ 11 标准新增的Lambda表达式,可以这么写:
sort(a,a+n,[](inta,intb){returna>b;});//降序排序
ISO C++14支持基于类型推断的泛型lambda表达式。上面的排序代码可以这样写:
sort(a,a+n,[](constauto&a,constauto&b){returna>b;});//降序排序:不依赖a和b的具体类型

由于Lambda的类型是唯一的,不能通过类型名来显式声明对应的对象,但可以利用auto关键字和类型推导:
autof=[](inta,intb){returna>b;};

以上,Lambda表达式有助于重构代码,避免书写过于复杂的参数类型。特别地,不需要显式指出参数类型使使用高阶函数变得更加容易。

更多推荐

关于常用的Lambda(拉姆达)表达式

本文发布于:2023-06-17 08:24:05,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/756060.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:表达式   拉姆   常用   Lambda

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!