C++的lambda表达式(匿名函数)

这篇具有很好参考价值的文章主要介绍了C++的lambda表达式(匿名函数)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从C++11开始,C++也支持使用lambda表达式(匿名函数)。Lambda表达式是一种便捷的方式,可以定义一个函数对象,而无需使用显式的函数对象类型或函数指针语法。

C++中的 lambda表达式的基本语法如下:

[capture list] (parameter list) -> return type { function body }

其中各个部分的含义如下:

  • capture list:用于指定所捕获的外部变量列表。可以使用以下符号:
    • []:不捕获任何外部变量。
    • [&]:以引用的方式捕获所有外部变量。
    • [=]:以值的方式捕获所有外部变量。
    • [var1, var2, ...]:指定要捕获的具体变量,可以使用值捕获或引用捕获。例如,[&var1, =var2]表示对var1采用引用方式捕获,对var2采用值捕获。
  • parameter list:用于指定函数参数列表,与普通函数定义一样。
  • return type:用于指定函数返回值类型,可以省略,编译器会自动推断返回类型。
  • function body:用于定义函数的代码块。

下面是一个简单的例子,展示了如何使用lambda表达式计算两个整数的和:

#include <iostream>
using namespace std;

int main()
{
    // 定义一个lambda表达式,计算两个整数的和
    auto sum = [](int a, int b) -> int {
        return a + b;
    };

    // 使用lambda表达式计算两个整数的和
    cout << sum(2, 3) << endl; // 输出 5

    return 0;
}

在这个例子中,我们使用auto关键字定义了一个lambda表达式,并将其赋值给变量sum。这个lambda表达式接受两个整数参数ab,返回它们的和。在main()函数中,我们使用这个lambda表达式计算了两个整数的和,并输出结果。

需要注意的是,lambda表达式也可以作为其他函数的参数,例如std::for_each()std::sort()std::transform()等STL算法中的函数。使用lambda表达式可以让代码更加简洁和紧凑。文章来源地址https://www.toymoban.com/news/detail-475614.html

到了这里,关于C++的lambda表达式(匿名函数)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C++】C++11——lambda表达式

    我们之前都是通过函数指针、仿函数的方式可以像函数使用的对象,在C++11之后,就有了Lambda表达式 为了实现一个比较算法, 都要重新去写一个类,如果每次比较的逻辑不一样,还要去实现多个类,特别是相同类的命名,看代码的人就遭殃了,非常的烦,这些都非常地不方便

    2024年01月17日
    浏览(52)
  • 【C++】C++11语法 ~ lambda 表达式

    (꒪ꇴ꒪(꒪ꇴ꒪ )🐣,我是 Scort 目前状态:大三非科班啃C++中 🌍博客主页:张小姐的猫~江湖背景 快上车🚘,握好方向盘跟我有一起打天下嘞! 送给自己的一句鸡汤🤔: 🔥真正的大师永远怀着一颗学徒的心 作者水平很有限,如果发现错误,可在评论区指正,感谢🙏 🎉🎉

    2024年01月20日
    浏览(62)
  • C# 匿名方法和Lambda表达式

    1.匿名方法的演变 匿名方法是为了简化委托的实现,方便调用委托方法而出现的,同时,匿名方法也是学好lambda表达式的基础。在委托调用的方法中,如果方法只被调用一次,这个时候我们就没有必要创建具名方法,从而用匿名方法更为方便。 下面一段代码是声明并使用了一

    2024年02月15日
    浏览(44)
  • 【C++干货铺】C++11新特性——lambda表达式 | 包装器

    ========================================================================= 个人主页点击直达:小白不是程序媛 C++系列专栏:C++干货铺 代码仓库:Gitee ========================================================================= 目录 C++98中的排序 lambda表达式 lambda表达式语法 表达式中的各部分说明 lambda表达式的使

    2024年01月21日
    浏览(44)
  • Lambda表达式和匿名内部类的区别

    匿名内部类:可以是接口,也可以是抽象类,还可以是具体类 Lambda表达式:只能是接口 如果接口中有且仅有一个抽象方法,可以使用Lambda表达式,也可以使用匿名内部类 如果接口中多于一个抽象方法,只能使用匿名内部类,而不能使用Lambda表达式 匿名内部类:编译之后,产

    2024年02月10日
    浏览(48)
  • CSharp的lambda表达式匿名类扩展方法

    之前已经写过一些关于委托还有事件的文章,今天就来介绍一下lambda表达式。 首先定义需要的函数以及委托 在.net farmwork 1.0,会这样写我们的匿名函数 在.netframework 2.0,会这样写匿名函数, 增加了一个delegate 在.netframework3.0,去掉了delegate了,在参数后增加了一个=

    2024年03月14日
    浏览(80)
  • C++ lambda表达式函数递归调用简单写法实现

    在C++11中,lambda表达式函数递归往往会带上 functional 头文件。书写形式如下: 还有相对简单点的第二种写法(C++14): 对于第二种, auto fib 的作用是为了在 lambda 表达式内部能够递归调用自身。在 C++14 中,lambda 表达式默认是无法直接递归调用的,因为在 lambda 内部无法访问到

    2024年02月15日
    浏览(50)
  • C++结合Lambda表达式在函数内部实现递归

    529. 扫雷游戏 已解答 中等 相关标签 相关企业 让我们一起来玩扫雷游戏! 给你一个大小为  m x n  二维字符矩阵  board  ,表示扫雷游戏的盘面,其中: \\\'M\\\'  代表一个  未挖出的  地雷, \\\'E\\\'  代表一个  未挖出的  空方块, \\\'B\\\'   代表没有相邻(上,下,左,右,和所有4个

    2024年02月21日
    浏览(42)
  • 【C++进阶】C++11(下)可变参数模板&lambda表达式&包装器

    我们紧接着上一节的讲解来进行 C++11的新特性可变参数模板能够让您创建可以接受可变参数的函数模板和类模板,相比C++98/03,类模版和函数模版中只能含固定数量的模版参数,可变模版参数无疑是一个巨大的改进。然而由于可变模版参数比较抽象,使用起来需要一定的技巧

    2024年04月11日
    浏览(89)
  • C#学习相关系列之匿名方法和Lambda表达式

            匿名方法 顾名思义就是这类方法的特点是不需要特别去定义函数的名字的。一般我们需要一个函数,但又不想花时间去命名它的时候,就可以使用匿名方法。在 C# 中, 匿名方法通常表现为使用 delegate 运算符和 Lambda 表达式。( Lambda 表达式 的本质也是 匿名方法

    2024年02月07日
    浏览(54)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包