我的编程空间,编程开发者的网络收藏夹
学习永远不晚

C++中的Lambda函数怎么使用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

C++中的Lambda函数怎么使用

这篇文章主要讲解了“C++中的Lambda函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的Lambda函数怎么使用”吧!

    一 函数语法

    我们平时调用函数的时候,都是需要被调用函数的函数名,但是匿名函数就不需要函数名,而且直接写在需要调用的地方,对于以前没用过的小伙伴来说,第一眼看见了这语法可能很迷惑。

    C++11的基本语法格式为:

    [capture](parameters) -> return_type {  }

    (1) [capture] :[]内为外部变量的传递方式,值、引用等,如下

    []        //表示的是在lambda定义之前的域,对外部参数的调用;[=]       //表示外部参数直接传值[&]       //表示外部参数传引用,可修改值。当默认捕获符是 & 时,后继的简单捕获符必须不以 & 开始。而当默认捕获符是 = 时,后继的简单捕获符必须以 & 开始。[x, &y]   //x is captured by value, y is captured by reference[&, x]    //x is explicitly captured by value. Other variables will be captured by reference[=, &z]   //z is explicitly captured by reference. Other variables will be captured by value

    (2)(parameters) :()内为形参,和普通函数的形参一样。
    (3)-> return_type:->后面为lambda函数的返回类型,如 -> int-> string等。一般情况下,编译器推出lambda函数的返回值,所以这部分可以省略不写。
    (4){ }:{}内为函数主体,和普通函数一样。

    二 函数应用

    1、在普通函数中使用

    首先是定义,执行下面这句,不会运行函数 !!!

    std::function<int(int,int)> add = [](int a,int b) ->int {  return a + b;   };

    上面代码,你知道lambda函数返回类型为int类型,但是函数左边不能直接赋值给int变量(编译器会报错),因为此处为lambda函数的定义,所以左边为函数指针类型变量,一般懒得写函数指针类型,就直接赋值给auto类型变量,如下。

    auto add = [](int a,int b) ->int {  return a + b;   };

    下面才是函数的使用、运行!!!
    如何运行lambda函数并获取函数返回值?执行函数需要看下面代码:

    auto add = [](int a,int b) ->int {  return a + b;   };    int result  = add(1,2);

    又或者如下:

    auto add = [](int a,int b) ->int {  return a + b;   };int(*func_ptr)(int,int) = add ;int result = func_ptr(1,2);

    2、在qt信号槽中使用

    我觉得labmda函数非常适合在信号槽中使用。
    (1)返回的函数指针可以直接用在connect函数中,刚好契合。
    (2)该槽函数可能比较简单,只有这个地方使用,可以省去槽函数声明,使代码看上去更加简便,且业务代码更加集中。
    基本使用

    connect(sys, &SYSClass::sig_1, this, [=](int index)    {        ......    });

    绑定信号槽的时候定义lambda函数,当收到信号的时候才执行槽函数,即lambda函数。
    使用示范
    在mTime时间后执行动画,动画执行后delete对象,非常适合弹窗关闭时,窗口关闭的动画操作。(widgetPtr为弹窗的指针)

    QTimer::singleShot(mTime,widgetPtr,[=]()    {        QPropertyAnimation *pAnimation = new QPropertyAnimation(widgetPtr,"windowOpacity",widgetPtr);        pAnimation->setDuration(1000);        pAnimation->setEasingCurve(QEasingCurve::InCirc);        pAnimation->setStartValue(1.0);        pAnimation->setEndValue(0.0);        pAnimation->start();        connect(pAnimation,&QPropertyAnimation::finished,[=]{            delete widgetPtr;        });    });

    3、在std::sort排序函数中的使用

    在标准库的排序函数使用中,可以使用函数回调的方式自定义排序的比较规则。
    (1)sort函数提供排序算法;(2)floatList为容器变量,提供数据结构和数据;(3)他们两个之间使用迭代器连接。
    而我们sort函数可以使用第三个参数(函数回调方式)作为比较依据进行排序,该参数就可以写成lambda函数,这样比较方法写在排序函数这里,可以使得代码更加直白、简便、集中。参考代码如下:

    std::sort( floatList, floatList + N, [](float a, float b) {            return a < b;        });

    上面lambda函数,是sort函数中的迭代器每次运行做排序比较的时候就调用。
    注意:
    (1)lambda函数参数为( float , float ),类型必须与容器的元素类型一致。
    (2)运行时,迭代器自动帮你把参数传入回调函数。
    (3)回调函数返回值固定为bool,这里可以不写,由编译器自动确定。

    感谢各位的阅读,以上就是“C++中的Lambda函数怎么使用”的内容了,经过本文的学习后,相信大家对C++中的Lambda函数怎么使用这一问题有了更深刻的体会,具体使用情况还需要大家实践验证。这里是编程网,小编将为大家推送更多相关知识点的文章,欢迎关注!

    免责声明:

    ① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

    ② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

    C++中的Lambda函数怎么使用

    下载Word文档到电脑,方便收藏和打印~

    下载Word文档

    猜你喜欢

    C++中的Lambda函数怎么使用

    这篇文章主要讲解了“C++中的Lambda函数怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++中的Lambda函数怎么使用”吧!一 函数语法我们平时调用函数的时候,都是需要被调用
    2023-06-22

    C++ lambda函数怎么使用

    本篇内容介绍了“C++ lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!Lambda 表达式Lambda 表达式是现代
    2023-07-05

    C++11中的lambda匿名函数怎么使用

    本篇内容主要讲解“C++11中的lambda匿名函数怎么使用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“C++11中的lambda匿名函数怎么使用”吧!lambda 源自希腊字母表中第 11
    2023-07-04

    Python中怎么使用Lambda函数

    这篇文章主要介绍了Python中怎么使用Lambda函数,具有一定借鉴价值,感兴趣的朋友可以参考下,希望大家阅读完这篇文章之后大有收获,下面让小编带着大家一起了解一下。引言Lambda 函数(也称为匿名函数)是函数式编程中的核心概念之一。支
    2023-06-14

    Python当中Lambda函数怎么使用

    本文小编为大家详细介绍“Python当中Lambda函数怎么使用”,内容详细,步骤清晰,细节处理妥当,希望这篇“Python当中Lambda函数怎么使用”文章能帮助大家解决疑惑,下面跟着小编的思路慢慢深入,一起来学习新知识吧。什么是Lamb
    2023-07-06

    Python lambda函数怎么使用

    本篇内容介绍了“Python lambda函数怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!一、lambda函数的定义 &
    2023-07-02

    C++11中匿名函数lambda的使用详解

    我最早接触lambda的概念是在matlab中,那时候在做数值模拟的课题,lambda可以快速定义简单的函数,当时觉得好方便。任何语言都有这个功能,下面来看看C++11新引入的lambda是如何使用的吧
    2023-05-18

    python中lambda函数怎么用

    Python中lambda函数是一种匿名函数,也称为内联函数或者函数字面量。可以用来创建简单的、单行的函数,通常用于需要一个函数,但是只使用一次,不需要命名的情况。lambda 函数的基本语法为“lambda arguments: expr
    python中lambda函数怎么用
    2023-12-13

    C++和C#中的lambda方法怎么使用

    这篇文章主要讲解了“C++和C#中的lambda方法怎么使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“C++和C#中的lambda方法怎么使用”吧!一、语法定义首先我们看下 C++ 语法
    2023-07-02

    lambda函数怎么用

    这篇文章主要介绍lambda函数怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!lambda函数也叫匿名函数,就是没有函数名的函数。lambda表达式基于数学中的λ演算得名,直接对应于其中的lambda抽象。la
    2023-06-02

    python中的lambda函数如何使用

    在Python中,lambda函数是一种匿名函数,可以在一行代码中定义函数,常用于简化代码。使用lambda函数的语法如下:```pythonlambda arguments: expression```其中,arguments是函数的参数
    2023-09-05

    Lambda和高阶函数怎么在Kotlin 中使用

    本篇文章为大家展示了Lambda和高阶函数怎么在Kotlin 中使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Lambda是什么Lambda是一种函数的表示方式(言外之意也就是说一个Lambda
    2023-05-30

    lambda函数python怎么用

    python 中的 lambda 函数是匿名函数,用于定义执行单个表达式的函数。它具有简洁、匿名和一次性使用的优点。lambda 函数的语法为:lambda 参数列表: 表达式,其中参数列表为要传入的参数,表达式为要执行的操作。lambda
    lambda函数python怎么用
    2024-05-13

    C++ 函数中 lambda 表达式的使用案例有哪些?

    c++++函数中的lambda表达式用例:回调函数:传递给其他函数或对象作为回调函数。仿函数:提供自定义比较器或谓词。事件处理:响应事件的回调函数。代码简化:消除对命名函数的需要。匿名函数:定义不需要命名的情况下使用。C++ 函数中 lam
    C++ 函数中 lambda 表达式的使用案例有哪些?
    2024-04-25

    C++ 函数的 lambda 표达式的使用场景是什么?

    lambda 表达式是匿名函数,可用于简化代码、作为回调函数或参数化函数,优点包括简化代码、减少冗余和提高灵活性。C++ 函数中 lambda 表达式的使用场景lambda 表达式是一种匿名函数,可以在函数体内定义和使用。与普通函数不同,
    C++ 函数的 lambda 표达式的使用场景是什么?
    2024-04-19

    C++11中的lambda表达式怎么使用

    本篇内容介绍了“C++11中的lambda表达式怎么使用”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!可调用对象对于一个表达式e,如果可以编
    2023-06-19

    Python中Lambda函数如何使用

    本篇文章为大家展示了Python中Lambda函数如何使用,内容简明扼要并且容易理解,绝对能使你眼前一亮,通过这篇文章的详细介绍希望你能有所收获。Python代码print reduce(lambda x,y:x*y, rang
    2023-06-17

    编程热搜

    • Python 学习之路 - Python
      一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
      Python 学习之路 - Python
    • chatgpt的中文全称是什么
      chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
      chatgpt的中文全称是什么
    • C/C++中extern函数使用详解
    • C/C++可变参数的使用
      可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
      C/C++可变参数的使用
    • css样式文件该放在哪里
    • php中数组下标必须是连续的吗
    • Python 3 教程
      Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
      Python 3 教程
    • Python pip包管理
      一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
      Python pip包管理
    • ubuntu如何重新编译内核
    • 改善Java代码之慎用java动态编译

    目录