C++复习笔记--Lambda表达式

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

1--Lambda表达式

1-1--基本用法

① [] 用于捕获变量,一般用于使用和修改外部的变量,可以为空;

② (int a, int b) 表示参数列表,可以省略;

③ -> int 定义返回类型,一般可以省略,让编译器自动推断;

④ auto f 表示将定义的 lambda 表达式赋值给对象 f,auto 用于自动推断类型;

基本用法如下:

#include <iostream>
 
int main(int argc, char *argv[]){

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

    std::cout << f(1, 2) << std::endl;
    return 0;
}

1-2--其余用法

① 使用和修改外部变量

通过捕获变量来修改(引用传递)和使用外部变量:

#include <iostream>
 
int main(int argc, char *argv[]){

    int M = 10, N = 20;
    auto f = [&M, N](int a, int b){
        std::cout << "N:" << N << std::endl; // 使用外部变量
        M = 30; // 修改外部变量
        return a + b;
    };

    std::cout << f(1, 2) << std::endl;
    std::cout << "M: " << M << std::endl;
    return 0;
}

② 自定义变量

通过捕获变量来自定义变量,无需出现在外部;

#include <iostream>
 
int main(int argc, char *argv[]){

    int M = 10, N = 20;
    auto f = [&M, N, c=3](int a, int b){
        std::cout << "N:" << N << std::endl; // 使用外部变量
        M = 30; // 修改外部变量
        return (a + b) * c;
    };

    std::cout << f(1, 2) << std::endl;
    std::cout << "M: " << M << std::endl;
    return 0;
}

2--参考

清晰易懂,现代C++最好用特性之一:Lambda表达式用法详解文章来源地址https://www.toymoban.com/news/detail-570194.html

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

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

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

相关文章

  • 【C++】Lambda表达式的使用

    例如: 了解Lambda的优点 掌握Lambda表达式的使用 了解Lambda表达式的底层原理 Lambda表达式的语法 lambda表达式的底层实现涉及到闭包(Closure)的概念。闭包是一个函数对象,它可以捕获外部作用域中的变量,并在其生命周期内访问和修改这些变量。lambda表达式的底层实现就是通

    2024年02月14日
    浏览(35)
  • C++的lambda表达式(匿名函数)

    从C++11开始,C++也支持使用lambda表达式(匿名函数)。Lambda表达式是一种便捷的方式,可以定义一个函数对象,而无需使用显式的函数对象类型或函数指针语法。 C++中的 lambda表达式的基本语法如下: 其中各个部分的含义如下: capture list :用于指定所捕获的外部变量列表。可

    2024年02月08日
    浏览(38)
  • 【C++】C++11——lambda表达式

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

    2024年01月17日
    浏览(41)
  • C++ Lambda表达式的常见用法

    ⭐️我叫忆_恒心,一名喜欢书写博客的在读研究生👨‍🎓。 如果觉得本文能帮到您, 麻烦点个赞 👍呗! 近期会不断在专栏里进行更新讲解博客~~~ 有什么问题的小伙伴 欢迎留言提问欧,喜欢的小伙伴给个三连支持一下呗。👍⭐️❤️ 作为C++11的新特性的Lambada表达式本身

    2024年01月16日
    浏览(51)
  • C++系列十:日常学习-Lambda表达式

    目录 前言 必备理论知识: 例子: 20230920 加 例如 对函数指针和指针函数补充: 有C#经验,使用起来,驾轻就熟。 就是语法糖。但是也要熟悉用法,才好众享丝滑。 内容参考: Chatjpt、文心一言 C++ lambda 表达式是一种功能强大的编程工具,它允许您在代码中创建匿名函数或闭

    2024年02月08日
    浏览(41)
  • 【C++】C++11语法 ~ lambda 表达式

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

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

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

    2024年02月21日
    浏览(31)
  • Learning C++ No.30 【lambda表达式实战】

    北京时间:2023/6/9/9:13,今天8:15起床,可能是最近课非常少,导致写博客没什么压力,什么时间都能写,导致7点起不来,哈哈哈,习惯睡懒觉了,但是问题不大,还在可控范围内,并且就在前天下午,我们进行了学校MySQL的期末考试,大一就学MySQL,我甚是想吐糟,实操题对于

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

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

    2024年02月15日
    浏览(36)
  • 【自学笔记】01Java基础-08Java常用API:05正则表达式与Lambda表达式

    记录Java基础-常用API-正则表达式与Lambda表达式的内容。 正则表达式在线练习网站 正则表达式是一种强大的文本处理工具,它使用特殊的字符和模式来匹配、查找、替换或提取字符串中的特定内容。 在Java中,正则表达式的功能主要通过 java.util.regex 包中的 Pattern 和 Matcher 类实

    2024年01月19日
    浏览(57)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包