C++-Lambda表达式

目录

1.什么是 Lambda?

2.例子:打印每个元素(和 for_each 一起用)

3.捕获外部变量(Capture)

3.1. 捕获值(拷贝):[=]

3.2. 捕获引用:[&]

3.3. 指定捕获的变量

4.带返回值的 lambda


1.什么是 Lambda?

Lambda 是 匿名函数,也就是没有名字的函数。常用于 STL 算法中作为函数参数,让代码更简洁。

基本语法:

[capture](parameters) -> return_type {function_body
}

其中:

部分说明
[capture]捕获外部变量(如局部变量)的方式
(parameters)参数列表,和普通函数一样,如 (int x)
-> return_type返回类型,可以省略(如果能自动推导)
{}函数体

2.例子:打印每个元素(和 for_each 一起用)

#include <vector>
#include <algorithm>
#include <iostream>int main() {std::vector<int> v = {1, 2, 3};std::for_each(v.begin(), v.end(), [](int x) {std::cout << x << " ";});// 输出:1 2 3return 0;
}

3.捕获外部变量(Capture)

3.1. 捕获值(拷贝):[=] 不能修改副本

int a = 10;
auto f = [=]() { std::cout << a << "\n"; }; // 拷贝 a
f(); // 输出 10

想要在 [=] 下修改副本怎么办?可以加上 mutable 关键字:

using namespace std;int main() {int a = 10;auto f = [=]() mutable {a = 20;std::cout << a;};f();std::cout << a; // 依然输出 10}

3.2. 捕获引用:[&]

int a = 10;
auto f = [&]() { a = 20; }; // 修改外部 a
f();
std::cout << a; // 输出 20

3.3. 指定捕获的变量

int a = 5, b = 10;auto f1 = [a]() { std::cout << a << "\n"; };     // 只捕获 a(值捕获)
auto f2 = [&b]() { b += 5; };                    // 只捕获 b(引用捕获)

4.带返回值的 lambda

auto add = [](int x, int y) -> int {return x + y;
};std::cout << add(3, 4); // 输出 7

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

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

相关文章

每日一题洛谷P8635 [蓝桥杯 2016 省 AB] 四平方和c++

P8635 [蓝桥杯 2016 省 AB] 四平方和 - 洛谷 (luogu.com.cn) 直接暴力枚举&#xff0c;不做任何优化的话最后会TLE一个&#xff0c;稍微优化一下就过了&#xff08;数据给的还是太良心了&#xff09; 优化&#xff1a;每层循环用if判断一下&#xff0c;如果大于n就直接跳 当然…

罗技K580蓝牙键盘连接mac pro

罗技K580蓝牙键盘&#xff0c;满足了我们的使用需求。最棒的是&#xff0c;它能够同时连接两个设备&#xff0c;通过按F11和F12键进行切换&#xff0c;简直不要太方便&#xff01; 连接电脑 &#x1f4bb; USB连接 1、打开键盘&#xff1a;双手按住凹槽两边向前推&#xff0…

C语言与指针3——基本数据类型

误区补充 char 的 表示范围0-127 signed char 127 unsigned char 0-255enum不常用&#xff0c;但是常见&#xff0c;这里记录一下。 enum Day {Monday 1,//范围是IntTuesday 2,Wednesday 3 }; enum Day d Monday; switch (d) {case Monday:{printf("%d",Monday);…

如何理解 MCP 和 A2A 的区别?|AI系统架构科普

你有没有发现,现在越来越多AI项目的架构图里,都开始出现一些看不懂的新缩写。 MCP(Multi-component Pipeline),还有另一个也经常出现在大模型系统搭建中的词,叫 A2A(Agent-to-Agent)。 这俩东西看起来都跟智能体(Agent)有关,但到底有啥区别?谁更强?谁更适合你?…

C语言中 typedef 关键字

在C语言中&#xff0c;typedef 关键字用于为现有数据类型定义新的别名&#xff08;类型重命名&#xff09;&#xff0c;其核心目的是‌提高代码可读性‌和‌简化复杂类型的声明‌。以下是其用法详解及典型场景&#xff1a; 1.基本语法‌ typedef original_type new_type_name…

Learning vtkjs之TubeFilter

过滤器 沿着线生成管道 介绍 vtkTubeFilter - 一个在每条输入线周围生成管的过滤器 vtkTubeFilter是一个在每条输入线周围生成管的过滤器。管由三角形条带组成&#xff0c;并随着线法线的旋转而旋转。如果没有法线存在&#xff0c;它们会自动计算。管的半径可以根据标量或向…

python常用科学计算库及使用示例

​一、NumPy - 数值计算基础库​​ ​​安装​​ pip install numpy ​​核心功能示例​​ 1. 数组创建与运算 import numpy as np# 创建数组 arr np.array([1, 2, 3, 4]) matrix np.array([[1, 2], [3, 4]])# 数学运算 print(arr 1) # [2 3 4 5] print(matrix …

中科院黄飞敏等人证明希尔伯特第六问题使用的或然判断(估计)-没有使用演绎推理的必然判断

国家自然科学基金委在2013年介绍黄飞敏的工作&#xff0c;居然是错误的&#xff1a;黄飞敏等人73页的论文&#xff0c;全篇都是用或然判断的“估计”代替必然判断的演绎证明&#xff0c;将没有实验的推演当成事实。 首页 >>年度报告 >>2013年度报告 >>第二部…

【安装指南】Chat2DB-集成了AI功能的数据库管理工具

一、Chat2DB 的介绍 Chat2DB 是一款开源的、AI 驱动的数据库工具和 SQL 客户端&#xff0c;提供现代化的图形界面&#xff0c;支持 MySQL、Oracle、PostgreSQL、DB2、SQL Server、SQLite、H2、ClickHouse、BigQuery 等多种数据库。它旨在简化数据库管理、SQL 查询编写、报表生…

vite项目tailwindcss4的使用

1、安装taillandcss 前几天接手了一个项目&#xff0c;看到别人用tailwindcss节省了很多css代码的编写&#xff0c;所以自己也想在公司项目中接入tailwindcss。 官网教程如下&#xff1a; Installing Tailwind CSS with Vite - Tailwind CSS 然而&#xff0c;我在vite中按…

第 13 届蓝桥杯 C++ 青少组省赛中 / 高级组 2022 年真题

一、选择题 第 1 题 题目&#xff1a;已知char a; float b; double c;&#xff0c;执行语句c a b c;后变量c的类型是&#xff08; &#xff09;。 A. char B. float C. double D. int 正确答案&#xff1a;C 答案解析&#xff1a; 在 C 中&#xff0c;表达式运算会进行类型…

解决GoLand无法Debug的问题

文章目录 解决GoLand无法Debug的问题问题描述解决方案方法一&#xff1a;安装并替换Delve调试工具方法二&#xff1a;通过GoLand自动安装方法三&#xff1a;配置自定义Delve路径 验证解决方案常见问题排查总结 解决GoLand无法Debug的问题 问题描述 在使用GoLand进行Go语言开发…

5.2刷题

P1064 [NOIP 2006 提高组] 金明的预算方案 背包&#xff0b;附属品DP #include<bits/stdc.h> using namespace std; #define int long long int n, m, v, p, q; struct node{int id, v, s, f; }a[100]; int b[32010], dp[32010]; bool cmp(node a, node b){if(a.id b.…

轻舟系列FPGA加速卡:大模型分布式训练中的高效协同者

在超大规模模型&#xff08;如千亿级参数&#xff09;的分布式训练中&#xff0c;计算、存储与通信的协同优化是突破性能瓶颈的关键。绿算技术公司的轻舟系列FPGA加速卡凭借其低延迟、高能效和可编程特性&#xff0c;能够成为分布式训练架构中的异构加速节点。其在训练集群中的…

序列数据(Sequential Data)​​:按顺序排列的动态信息载体

核心定义​​ 序列数据是​​按特定顺序排列​​的数据集合&#xff0c;其中元素的​​位置或时间顺序​​蕴含关键信息。例如&#xff1a; ​​时间序列​​&#xff1a;股票价格、气温变化&#xff08;按时间戳排列&#xff09;。​​文本​​&#xff1a;句子中的词语序列…

【单片机数码管实现第一位开始走0~9,1s后第二位再开始亮】2022-5-2

缘由怎么让单片机数码管实现第一位开始走0~9,1s后第二位再开始亮? - 24小时必答区 #include "REG52.h" void sm7447(unsigned char mz, unsigned char w) {unsigned char Xd0;P2255;P2mz;P3w;while(Xd); } void main() {unsigned char jz0,zhi128;unsigned int Ys4…

InnoDB索引的原理

在鹅厂后端开发一面&#xff0c;我遇到了如题这样一个比较宽泛的问题&#xff0c;当时可能只是背了相关概念&#xff0c;对于索引的了解不是很深刻。 最近&#xff0c;我花了很大的功夫去深入了解MySQL的索引。 下面是我的一些思考&#xff1a; 索引&#xff0c;对于InnoDB来说…

FormCalc 支持的编程语言和软件

FormCalc 是一种专为 PDF 表单计算设计的脚本语言&#xff0c;主要应用于 Adobe 生态及 SAP 相关工具。以下是支持 FormCalc 的主要软件和平台&#xff1a; 1. Adobe LiveCycle Designer&#xff08;最佳支持&#xff09; 原生支持&#xff1a;FormCalc 是 LiveCycle Designe…

unity 为什么不切片 Sprite.rect 与Sprite.textureRect的值还不一样

一。测试代码&#xff1a; 二。发现Debug不一样的原因 与解决方案&#xff1a; 下图右边所示&#xff1a; 网格类型默认为紧密 在 Unity 中&#xff0c;纹理导入时可能存在自动的偏移和裁剪设置。即便你没有手动切片&#xff0c;Unity 可能会根据纹理的导入设置&#xff0c;对…

超预期!淘宝闪购提前开放全国全量,联合饿了么扭转外卖战局

饿了么由守转攻。 作者|景行 编辑|杨舟 淘宝饿了么&#xff0c;终于落子&#xff0c;“淘宝闪购”&#xff0c;横空出世&#xff0c;仅仅2天&#xff0c;业务加速。 4月30日上午&#xff0c;当外卖战场陷入沉寂时&#xff0c;淘宝宣布将即时零售业务“小时达”升级为“淘宝闪…