C++泛型算法

C++泛型算法

定制操作

lambda表达式

概述
  • 特点

    • lamdba表达式是一种可调用对象,类似函数和函数指针

    • 一个lambda表达式表示一个可调用的代码单元

    • lambda表达式定义在函数内部

  • 格式

    • [capture list](parameter list)-> return type{function body}
    • capture list:表示lambda表达式所在函数中定义的要在lambda中使用的局部变量的列表
    • parameter list:表示参数列表
    • return type:表示返回类型
    • function body:表示函数体
  • 说明

    • 参数列表和返回类型可以没有,但是捕获列表和函数体必须有,即使为空。省略参数列表表示无参数,省略返回类型则会自动进行推断

      1
      auto f = []{return 42};
    • lambda的调用方式和普通函数相同

      1
      cout << f() << endl;
lambda的捕获
  • 值捕获

  • 引用捕获

    1
    auto f = [&v]{return v1;};

    此时v即为引用捕获。

    • 引用捕获的变量在lambda中同其他类型的引用行为类似
    • 引用捕获的变量在使用时必须保证所引用的对象是存在的
  • 隐式捕获