当前位置: 首页 > news >正文

【学习笔记】Lamba表达式[匿名函数]

【学习笔记】Lamba表达式[匿名函数]

  • Lamba表达式格式
  • 函数模板
  • Lamba表达式例子

Lamba表达式格式

格式:

	[捕获列表](参数列表) -> 返回类型 { 函数体 }

1、捕获列表:指定如何访问外部变量(如 [&x] 引用捕获,[x] 值捕获)。
2、参数列表:与普通函数的参数相同。
3、返回类型:可省略(编译器自动推导),或用 -> int 显式指定。
4、函数体:实现具体逻辑。

函数模板

lamba表达式一般和函数模板配套使用,需要提前了解。
函数模板允许编写与类型无关的通用代码,提高代码复用性和灵活性。

template <typename T>  // 声明模板参数 T
T max(T a, T b) {return a > b ? a : b;
}
int a = 10, b = 20;
int result1 = max(a, b);  // 自动推导 T 为 intdouble x = 3.14, y = 2.71;
double result2 = max(x, y);  // 自动推导 T 为 double

Lamba表达式例子

#include <iostream>
#include <vector>
#include <string>// 水果类
struct Fruit {std::string name;double price;
};// 篮子类:管理水果列表
class FruitBasket {
private:std::vector<Fruit> fruits;public:// 模板函数:遍历水果并执行操作template <typename Function>void forEachFruit(Function action) {for (auto& fruit : fruits) {action(fruit);  // 对每个水果执行传入的操作}}// 添加水果void addFruit(const std::string& name, double price) {fruits.push_back({name, price});}
};int main() {FruitBasket basket;basket.addFruit("苹果", 5.99);basket.addFruit("香蕉", 3.99);basket.addFruit("草莓", 8.99);// 使用 lambda 表达式打印所有水果名称basket.forEachFruit([](const Fruit& fruit) {std::cout << "水果:" << fruit.name << ",价格:" << fruit.price << " 元" << std::endl;});// 使用 lambda 表达式计算总价(捕获外部变量 total)double total = 0.0;basket.forEachFruit([&total](const Fruit& fruit) {total += fruit.price;});std::cout << "总价:" << total << " 元" << std::endl;return 0;
}

代码中的lamba表达式:你可以理解为代码中的函数模板action就是下面的lamba表达式。传入的fruit可以理解为形参。

[](const Fruit& fruit) {std::cout << "水果:" << fruit.name << ",价格:" << fruit.price << " 元" << std::endl;}
[&total](const Fruit& fruit) {total += fruit.price;}
http://www.lqws.cn/news/167851.html

相关文章:

  • Linux进程替换以及exec六大函数运用
  • MATLAB | 绘图复刻(十九)| 轻松拿捏 Nature Communications 绘图
  • 在Coze平台中 API是什么?插件是什么?它们是一类吗?
  • 如何通过ETLCloud实现跨系统数据同步?
  • 矩形相交的面积 - 华为OD机试真题(JavaScript题解)
  • PyTorch中matmul函数使用详解和示例代码
  • 【Hot 100】322. 零钱兑换
  • 基于SSM框架的医院电子病历管理系统,分为用户网页和管理后台,包括科室模块、医生模块、预约挂号模块、就诊记录模块、就诊评价模块、轮播图模块和系统基础模块
  • HZOJ新手村前段时间的刷题的笔记
  • C++类二
  • 使用 Zabbix 官方 Nginx 模板的详细指南
  • Day130 | 灵神 | 回溯算法 | 子集型 电话号码的字母组合
  • Python基于历史模拟方法实现投资组合风险管理的VaR与ES模型项目实战
  • ArcGIS Maps SDK for JavaScript:使用图层过滤器只显示FeatureLayer的部分要素
  • B+树知识点总结
  • ArcGIS Pro 3.4 二次开发 - 宗地
  • TDengine 开发指南—— UDF函数
  • 小白升级的路-电子电路
  • 物流瘫痪预警:亚马逊多仓爆仓,卖家如何抢占夏季性价比市场?
  • halcon c# 自带examples报错 Matching
  • Offline Transition Modeling via Contrastive Energy Learning
  • 6月生效!亚马逊FBA入库运费调整,尺寸不符自动补差
  • springcloud openfeign 偶现 Caused by: java.net.UnknownHostException
  • 图像测试点列表
  • 60天python训练计划----day45
  • 数据分析Agent构建
  • 图简记。。
  • 线段树~~~
  • sockaddr结构体详解
  • graylog收集rsyslog实现搜索解析