C++冷知识:Lambda表达式 您所在的位置:网站首页 lambda表达式中给变量赋值 C++冷知识:Lambda表达式

C++冷知识:Lambda表达式

2023-06-15 10:54| 来源: 网络整理| 查看: 265

什么是Lambda表达式

所谓lambda表达式,是一种为了更方便实现回调和简单逻辑的函数写法,应用于C++ 11的新特性中。

Lambda表达式是一种匿名函数,它可以作为参数传递给其他函数或方法。它通常用于函数式编程,可以简化代码并提高代码的可读性。

lambda 具体的构成分为 不可隐藏部分和可隐藏部分。全量写法是:[capture list](parameter list)->return type function body 速记为:[]()->return {}

详细介绍上面的写法是:

capture list(捕获列表)是一个lambda所在函数中定义的局部变量的列表(通常为 空):return type、parameter list和function body与任何普通函数一样,分别表示返回类型、参数列表和函数体。但是,与普通函数不同,lambda必须使用尾置返回来指定返回类型。 可隐藏部分

我们可以忽略参数列表和返回类型,但必须永远包含捕获列表和函数体。如下

auto f = []{return 42;);

这里使用了 auto关键字,这是类型推断关键字。用来让编译器自行推断变量类型,简化代码风格。

其次就是简化后的lambda表达式。 这里我们简化了形参和返回类型显式声明。只留下局部变量捕获列表,和函数体。

不可隐藏部分

如上代码所述,局部变量捕获列表,和函数体。是lambda 表达式中不可省略的部分,这里要说明:[]是局部变量捕获列表,全局变量不在这里捕获。详细其他介绍请看下面的分结构解析部分。

{}是函数体部分,这里要说明的是,编译器会通过类型推定决定函数返回类型是什么,如果有除return 外的其他内容,将会认为应当返回void类型。 详细其他介绍请看下面的分结构解析部分。

lambda表达式和函数的区别

Lambda表达式和函数的区别在于,Lambda表达式是一种匿名函数,可以在代码中直接定义和使用,不需要像传统函数一样需要先定义再调用。Lambda表达式通常用于函数式编程,可以简化代码并提高代码的可读性。Lambda表达式可以作为参数传递给其他函数或方法,也可以在函数内部定义和使用。

而函数是一种有名字的代码块,需要先定义再调用。函数通常用于封装一段可重用的代码,可以接受参数并返回值。函数可以在程序的任何地方定义和调用,也可以作为参数传递给其他函数或方法。函数在C++中是一种重要的编程概念,可以帮助我们组织代码并提高代码的可维护性。

让我们换一种通俗的说法吧: 对于那种只在一两个地方使用的简单操作,lambda表达式是最有用的。如果我们需要在很多地方使用相同的操作,通常应该定义一个函数,而不是多次编写相同的lambda表达式。类似的,如果一个操作需要很多语句才能完成,通常使用函数更好。

调用方式 auto f = []{return 42;); cout


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有