【C++11新特性】lambda表达式和应用场景

创作不易,本篇文章如果帮助到了你,还请点赞 关注支持一下♡>𖥦<)!!
主页专栏有更多知识,如有疑问欢迎大家指正讨论,共同进步!
🔥c++系列专栏:C/C++零基础到精通 🔥

给大家跳段街舞感谢支持!ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ ዽ ጿ ኈ ቼ

在这里插入图片描述

c语言内容💖:

专栏:c语言之路重点知识整合

【c语言】全部知识点总结


目录

  • lambda表达式的格式:
  • 例 1:
  • 例 2:按照值传递捕获外部变量
  • 例 3:
  • 例 4:
  • 例 5:

C++11 中的 lambda表达式用于定义匿名函数,同样有 参数列表返回值类型函数体

但是它可以在函数内部定义。

定义小型匿名函数对象时更加便捷。

lambda表达式的格式:

auto 函数名 = [capture](parameters) -> return_type { body };

其中:

  • captures 捕获列表,用于捕获lambda外部的变量 , lambda可以把上下文变量以**值=引用&**的方式捕获(如果是引用传递,lambda 函数将会改变变量值),在body中直接使用,可以省略,即不捕获任何变量
  • parameters 参数列表,与普通函数的参数列表相同
  • ->return_type lambda 表达式的返回类型,如果省略,编译器将自动推导类型
  • body 函数体代码

例 1:

没有捕获列表、参数、返回值的 lambda 函数:

#include<iostream>using namespace std;
int main()
{auto fun = []() { cout << "this is a lambda function" << endl; };fun();getchar();return 0;
}

image.png

例 2:按照值传递捕获外部变量

#include<iostream>using namespace std;
int main()
{int x = 10;auto lambda = [x]() { return x * 2; };cout << lambda() << "  " << x << endl;getchar();return 0;
}

image.png

例 3:

按照引用传递捕获外部变量,将外部变量的值改变了:

#include<iostream>using namespace std;
int main()
{int x = 10;auto lambda = [&x]() { x *= 2; return x; };cout << lambda() << "  " << x << endl;getchar();return 0;
}

image.png

例 4:

带有返回值的 lambda 表达式

#include<iostream>using namespace std;
int main()
{auto lambda = [](int a, int b) -> int { return a + b; };cout << lambda(2, 3) << endl;  getchar();return 0;
}

image.png

例 5:

定义为匿名函数,放在其他函数的参数中

#include <iostream>  
#include <vector>  
#include <algorithm>  
using namespace std;int main() 
{vector<int> numbers = { 1, 2, 3, 4, 5 };// lambda表达式来对numbers逆向逆向排序sort(numbers.begin(), numbers.end(), [](int x, int y) {return x > y; });for (auto i : numbers){cout << i << " ";}getchar();return 0;
}

image.png


在这里插入图片描述

大家的点赞、收藏、关注将是我更新的最大动力! 欢迎留言或私信建议或问题。
大家的支持和反馈对我来说意义重大,我会继续不断努力提供有价值的内容!如果本文哪里有错误的地方还请大家多多指出(●'◡'●)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/9191.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【过生日,函数运用,找闰年】

小明出生在一个闰年&#xff0c;他想知道什么时候可以过生日&#xff0c;你能告诉他吗&#xff1f; 给你一个正整数Y&#xff0c;表示起始年份&#xff0c;和一个正整数N&#xff0c;你的任务是告诉小明从Y年开始第N个闰年是哪一年。 注意&#xff1a;如果Y就是闰年&#xff0c…

力扣每日一题112:路径总和

题目 简单 给你二叉树的根节点 root 和一个表示目标和的整数 targetSum 。判断该树中是否存在 根节点到叶子节点 的路径&#xff0c;这条路径上所有节点值相加等于目标和 targetSum 。如果存在&#xff0c;返回 true &#xff1b;否则&#xff0c;返回 false 。 叶子节点 是…

java入门1.1.1版本

前言&#xff1a; 上面的内容是1.0.0~1.1的内容总结 秉持着先做再定义的理念&#xff0c;这里会带着大家先体验一下类与对象 第一步&#xff1a;新建一个java文件 鼠标右键 → 新建 → 文本文档 → 右键 → 点击重名 → 全选 → hello.java 第二步&#xff1a;用笔记本打开 …

Java 面试题整理

Java 基础 Java 自动装箱、拆箱(编译器自动处理) 装箱: Jdk1.5 之后提供的功能、将包装类型自动转换为基本数据类型拆箱: Jdk1.5 之后提供的功能、将基本数据类型自动转换为包装类型 Jdk 与 Jre 的 区别 Jdk 是 Java 开发工具、包含了Jre 和 开发工具包JRE 是 Java 运行时环境 …

C++进阶:map与set简单自实现

目录 1. map与set封装红黑树的方式1.1 大概实现思路1.2 红黑树模板抽象1.3 红黑树的迭代器 2. 红黑树模板的实现2.1 结点结构的定义2.2 红黑树迭代器的实现2.2.1 迭代器的结构2.2.2 迭代器的方法实现 2.3 树结构的定义2.4 红黑树接口实现2.4.1 插入2.4.2 查找2.4.3 迭代器相关 …

pytest + yaml 框架 - 参数化读取文件路径优化

针对小伙伴提出参数化时读取外部文件&#xff0c;在项目根路径运行没问题&#xff0c;但是进入到项目下子文件夹运行用例&#xff0c;就会找不到文件问题做了优化。 关于参数化读取外部文件相关内容参考前面这篇pytest yaml 框架 -25.参数化数据支持读取外部文件txt/csv/json/…

随手笔记-GNN(朴素图神经网络)

自己看代码随手写的一点备忘录&#xff0c;自己看的&#xff0c;不喜勿喷 GNN (《------ 代码) 刚开始我还在怀疑为什么没有加weigth bias&#xff0c;已经为什么权重才两个&#xff0c;原来是对node_feats进行的network的传播&#xff0c;而且自己内部直接进行了。 下面是一…

【api接口开通教程】YouTube Data API v3申请流程

一、背景调查 1.1 API接口介绍 采集youtube数据&#xff0c;大体分为两种方案&#xff1a;一种是基于爬虫&#xff0c;一种是基于API接口。 说人话就是&#xff1a;爬虫相当于走后门、爬窗户&#xff08;利用技术手段窃取&#xff0c;人家没说给&#xff0c;但我硬拿&#x…

ssrf漏洞学习——基础知识

一、SSRF是什么&#xff1f; SSRF(Server-Side Request Forgery:服务器端请求伪造) 是一种由攻击者构造形成由服务端发起请求的一个安全漏洞。 一般情况下&#xff0c;SSRF攻击的目标是从外网无法访问的内部系统。&#xff08;正是因为它是由服务端发起的&#xff0c;所以它能…

java项目-导入https证书三种方式

1、导入证书到jdk&#xff08;linux虚拟机过程类似&#xff09; 1.1 确认jre的目录&#xff0c;通过查看path环境变量&#xff0c;查看JAVA_HOME %JAVA_HOME\jre\lib\security\目录即为keytool证书路径 1.2 安装证书到jre的路径 进入到jre路径 cd C:\Program Files\Java\jdk…

leetcode每日一题第七十二天

class Solution { public:TreeNode* searchBST(TreeNode* root, int val) {if(!root) return root;if(root->val val) return root;else if(root->val > val) return searchBST(root->left,val);else return searchBST(root->right,val);} };

日志打印传值 传引用 右值引用性能测试(Linux/QNX)

结论 Linux平台和qnx平台优化后传值性能都是比传引用的差&#xff0c;也比传右值的差&#xff0c;因此传参时有必要传递引用。 测试代码 #include <cstdint> #include <ctime> #include <string>#ifdef __linux__#define ITERATIONS 10000000 #else#defin…

(七)JSP教程——session对象

浏览器和Web服务器之间的交互通过HTTP协议来完成&#xff0c;HTTP协议是一种无状态的协议&#xff0c;服务器端无法保留浏览器每次与服务器的连接信息&#xff0c;无法判断每次连接的是否为同一客户端。为了让服务器端记住客户端的连接信息&#xff0c;可以使用session对象来记…

STM32--4G DTU 及 阿里云

模块概述 ATK-IDM750C/IDM751C 是正点原子(ALIENTEK)团队开发的一款高性能 4G Cat1 DTU 产品&#xff0c; 支持移动 4G、联通 4G 和电信 4G 手机卡。它以高速率、低延迟和无线数传作为核心功能&#xff0c; 可快速解决应用场景下的无线数传方案。 它支持 TCP/UDP/HTTP/MQTT/DN…

Scala基础学习-循环

一、流程控制 循环结构、选择结构、循环结构 1、循环结构 从上至下&#xff0c;从左至右&#xff0c;依次执行&#xff0c;系统默认结构 2.选择结构 分类&#xff1a;单分支、双分支、多分支 (1)、单分支 object xuexi {def main(args: Array[String]): Unit {val a 20…

【Python】JSON数据的使用

一、JSON JSON是什么&#xff1a; JSON&#xff08;JavaScript Object Notation&#xff09;是一种轻量级的数据交换格式&#xff0c;它以易于理解和生成的文本格式来描述数据对象。JSON最初是由Douglas Crockford在2001年提出的&#xff0c;它的设计受到了JavaScript对象字面量…

系统安全:物联网安全面试

文章目录 岗位要求 岗位要求

kafka(七)——消息偏移(消费者)

概念 消费者消费完消息后&#xff0c;向_consumer_offset主题发送消息&#xff0c;用来保存每个分区的偏移量。 流程说明 consumer发送JoinGroup请求&#xff1b;coordinator选出一个consumer作为leader&#xff0c;并将topics发送给leader消费者&#xff1b;leader consumer…

const修饰的成员函数

欢迎来到博主的专栏——C杂谈 博主ID&#xff1a;代码小豪 文章目录 const修饰了什么const修饰的成员函数是为什么&#xff1f;问答环节 const修饰的成员函数并非是在返回值类型用const&#xff0c;而是在成员函数的末尾加上const&#xff0c;比如&#xff1a; const char&…

全网最详细的Python自动化测试(unittest框架)

&#x1f525; 交流讨论&#xff1a;欢迎加入我们一起学习&#xff01; &#x1f525; 资源分享&#xff1a;耗时200小时精选的「软件测试」资料包 &#x1f525; 教程推荐&#xff1a;火遍全网的《软件测试》教程 &#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1…