第四节 · 小别致 · 枚举与联合类

Lambda 是 C++11 引入的匿名函数,随着标准的演进变得越来越强大。


Lambda 基础回顾

int main()
{
    // 基本语法
    auto add = [](int a, int b) { return a + b; };
    cout << add(1, 2) << endl;  // 3
    
    // 捕获列表
    int x = 10;
    auto addX = [x](int a) { return a + x; };  // 值捕获
    auto addXRef = [&x](int a) { return a + x; };  // 引用捕获
    
    // 捕获全部
    auto f1 = [=]() { return x; };   // 值捕获所有
    auto f2 = [&]() { return x; };   // 引用捕获所有
    
    return 0;
}

mutable Lambda


初始化捕获(C++14)


泛型 Lambda(C++14)


模板 Lambda(C++20)


立即调用的 Lambda(IIFE)


递归 Lambda


Lambda 与 STL


捕获 this


Lambda 的类型


实用模式


习题

  • 实现一个接受任意数量 Lambda 的 compose 函数。

  • 使用 Lambda 实现一个简单的延迟计算(lazy evaluation)。

  • 比较 Lambda 和函数对象的性能差异。

Last updated