定义:也称匿名函数,是简化函数定义和使用的一种手段
基本语法结构如下
[capture](parameters) -> return_type { // 函数体
}
capture:捕获列表,定义可以访问的外部变量
[] // 不捕获任何外部变量
[x] // 按值捕获x
[&y] // 按引用捕获y
[=] // 按值捕获所有外部变量
[&] // 按引用捕获所有外部变量
[x, &y] // 按值捕获x,按引用捕获y
parameters:参数列表,相当于普通函数的参数
return-type:返回类型,支持自动推导和显式定义
举例:
vector<vector<int>> intervals = {{1,4}, {2,3}, {3,6}};// 按结束值排序
sort(intervals.begin(), intervals.end(), [](vector<int>& a, vector<int>& b) { return a[1] < b[1]; });
**捕获列表和参数列表的区别**: 1. 捕获列表作用是让lambda表达式的函数体可以访问外部变量,包含值捕获(创建副本,不修改外部变量)和引用捕获(不创建副本,直接修改外部变量)。在创建时确定 2. 参数列表则是lambda的输入,决定处理哪些数据,形式是类型+参数名。在调用时提供