C++ lambda函数个人理解

及方便自己在函数内部定义函数

c 复制代码
int main() {
	int i = 1;
	auto c = [](int a, int c) {
		return a+b;
	};
	int d = a(2, i);
	cout<<c;


	return 0;
}

格式:

auto functionname = capture(parameters) -> return_type { /* ... */ };

(1)capture :\[\]内为外部变量的传递方式,值、引用等,如下

复制代码
[]        //表示的是在lambda定义之前的域,对外部参数的调用;
[=]       //表示外部参数直接传值
[&]       //表示外部参数传引用,可修改值。当默认捕获符是 & 时,后继的简单捕获符必须不以 & 开始。而当默认捕获符是 = 时,后继的简单捕获符必须以 & 开始。
[x, &y]   //x is captured by value, y is captured by reference
[&, x]    //x is explicitly captured by value. Other variables will be captured by reference
[=, &z]   //z is explicitly captured by reference. Other variables will be captured by value

(2)(parameters) :()内为形参,和普通函数的形参一样。

(3)-> return_type:->后面为lambda函数的返回类型,如 -> int、-> string等。一般情况下,编译器推出lambda函数的返回值,所以这部分可以省略不写。

(4){ /* ... */ }:{}内为函数主体,和普通函数一样。

相关推荐
wuyk5553 小时前
21. 嵌入式面试避坑指南:sizeof 是关键字,不是函数!
c语言·开发语言·stm32·单片机·嵌入式硬件
2601_962440843 小时前
计算机毕业设计之jsp教室管理系统
java·开发语言·笔记·分布式·算法·课程设计·推荐算法
unicrom_深圳市由你创科技6 小时前
数据库用SQLite还是SQL Server?工业数据存储选哪个?
c++
郝学胜_神的一滴6 小时前
CMake 037:宏传递流转机制与C++编译特性跨平台适配指南
c++·cmake
apocelipes2 天前
常用编程语言和库的正则表达式性能对比
c语言·c++·python·性能优化·golang·开发工具和环境
郝学胜_神的一滴3 天前
CMake 034:生成器表达式:解耦构建时序、精简分支逻辑的终极利器
c++·cmake
见过夏天4 天前
C++ 基础入门完全指南
c++
用户805533698035 天前
不止三件套:QObject 属性系统全关键字与运行时反射!
c++·qt
BadBadBad__AK6 天前
线段树维护区间 k 次方和
c++·数学·算法·stl
卷无止境6 天前
Eigen 库如何借助 OpenMP 加速计算
c++·后端