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

C++17新特性 Lambda表达式

//lambda表达式的基本语法如下:
/*
[捕获列表] (参数列表)mutable(可选)异常属性 -> 返回类型 {
    // 函数体
}*/

1,值捕获


//1, 值捕获示例
#include <iostream>
void lambda_value_capture() {int value = 1;auto copy_value/*返回值*/ = [value/*捕获列表*/](/*参数列表*/)/*自动推导返回值类型*/ {return value;//函数体};value = 100;auto stored_value = copy_value(); // 调用lambda表达式std::cout << "Stored value: " << stored_value << std::endl; // 这时,stored_value仍然是1,而value==100// 因为copy_value在创建时就保存了一份value的拷贝
}//2,引用捕获示例void lambda_reference_capture() {int value = 1;auto copy_value = [&value](/*参数列表*/) mutable {return value; // 函数体};value = 100;auto stored_value = copy_value(); // 调用lambda表达式std::cout << "Stored value: " << stored_value << std::endl; // 这时,stored_value == 100,value == 100 ;因为copy_value捕获的是value的引用
}

//3,隐式捕获

//手动书写捕获列表有时候是非常复杂的,这种机械性的工作可以交给编译器来处理,这时候可以在

//捕获列表中写一个&或=向编译器声明采用引用捕获或者值捕获

//总结一下,捕获提供了Lambda表达式对外部值进行使用的功能,捕获列表的最常用的四种形式可以是:

//[]空捕获列表

//[name1,name2,...]捕获一系列变量

//[&]引用捕获让编译器自行推导引用列表

//[=]值捕获让编译器自行推导值捕获列表

//4,表达式捕获

//这部分内容需要了解后面马上要提到的右值引用以及智能指针

//上面提到的值捕获、引用捕获都是已经在外层作用域声明的变量,因此这些捕获方式捕获的均为左

//值,而不能捕获右值。

//C++14给与了我们方便,允许捕获的成员用任意的表达式进行初始化,这就允许了右值的捕获,被

//声明的捕获变量类型会根据表达式进行判断,判断方式与使用auto本质上是相同的:


#include <utility>
#include <memory>
int main(){auto important = std::make_unique<int>(1);auto add = [v1 = 1,v2 = std::move(important)](int x, int y) mutable -> int {return x + y + v1 + *v2;};std::cout << add(3,4) << std::endl; return 0;
}

相关文章:

  • 第十四篇:MySQL 运维中的故障场景还原与排查实战技巧
  • NLP基础:从词嵌入到预训练模型应用
  • token
  • 进程间通信(消息队列)
  • C++学习打卡
  • qwen3解读
  • Redis事务详解:原理、使用与注意事项
  • vue-09(使用自定义事件和作用域插槽构建可重用组件)
  • 磨皮功能 C++/C的OpenCV 实现
  • 【11408学习记录】考研英语写作提分秘籍:2013真题邀请信精讲+万能模板套用技巧
  • 【shell】通过Shell命令占用内存
  • 利用python工具you-get下载网页的视频文件
  • #AI短视频制作完整教程
  • JDK21深度解密 Day 9:响应式编程模型重构
  • CTFHub-RCE 命令注入-过滤目录分隔符
  • 小明的Java面试奇遇之互联网保险系统架构与性能优化
  • 性能优化 - 理论篇:CPU、内存、I/O诊断手段
  • Unity3D仿星露谷物语开发57之保存库存信息到文件
  • 精简多功能办公软件
  • CodeTop100 Day18
  • 网站建设0基础/打开全网搜索
  • 重庆网站建设价位/备案查询网
  • 重庆求建网站/如何查看百度指数
  • 做企业网站的合同/随州seo
  • 江门网站制作/数字营销案例
  • 微商网站模板/培训体系