1、基本介绍
C++11 引入的 lambda 匿名函数(Lambda Expression)是一种轻量级的函数对象,可在需要函数的地方直接定义,无需单独声明,极大简化了代码编写(尤其是回调函数、算法谓词等场景)。
基本语法:- [capture-list] (parameter-list) mutable noexcept(optional) -> return-type { function-body }
复制代码 组成部分说明capture-list捕获列表:指定如何捕获 lambda 所在作用域的局部变量(值捕获、引用捕获等),不可省略。parameter-list参数列表:与普通函数的参数列表一致(可省略,若无形参)。mutable可选关键字:允许在 lambda 内部修改值捕获的变量(默认值捕获变量为 const)。noexcept可选:指定 lambda 是否可能抛出异常(C++11 起)。-> return-type返回类型:可选,若函数体仅有一条 return 语句,编译器可自动推导返回类型。function-body函数体:lambda 的执行逻辑。简单的例子
[code]#include #include #include int main() { std::vector v = {3, 1, 4, 1, 5, 9, 2, 6}; // 使用 Lambda 表达式作为 std::sort 的比较准则 // 按降序排序 std::sort(v.begin(), v.end(), [](int a, int b) { return a > b; } // Lambda 表达式 ); for (int i : v) { std::cout |