Lambda表达式

定义:也称匿名函数,是简化函数定义和使用的一种手段
基本语法结构如下

[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的输入,决定处理哪些数据,形式是类型+参数名。在调用时提供
posted @ 2025-09-25 14:05  AlgosEng-6w  阅读(17)  评论(0)    收藏  举报