lambda表达式概述
[函数对象参数] (操作符重载函数参数) mutable 或 exception 声明 -> 返回值类型 {
函数体
}
参数类型说明:
1.[函数对象参数]:捕捉列表。捕捉列表总是出现在Lambda函数的开始处,[]是Lambda引出符,必须存在,不可省略!
编译器根据该引出符判断接下来的代码是否是Lambda函数。捕捉列表能够捕捉上下文中的变量以供Lambda函数使用;
函数对象参数形式列表
2.[操作符重载函数参数] : 标识重载的 () 操作符的参数,没有参数时,这部分可以省略,可以连同括号“()”一起省略。
参数可以通过按值(如: (a, b))和按引用 (如: (&a, &b)) 两种方式进行传递。
3.mutable 或 exception 声明 :mutable 可变变量,exception 异常
注:在使用该修饰符时,参数列表不可省略(即使参数为空);
4.[返回值类型] :返回类型,当不需要返回类型时(void),可以省略
5.[函数体] : 函数内容,可以使用上下文的数据。
实例
[&]() { int a = 1;}; // 无参无返回 [&](int a) { int b = a + 1;}; // 单参无返回 [&](int a,int b) { int c = a + b;}; // 双参无返回 [&]() -> int { return 1;}; // 无参返回 [&](int a) -> int { return a + 1;}; // 无参无返回
function函数
头文件 functional.h
用于声明函数
std::function<int(int,int)> mod = [](int i, int j){return i % j; };
这里std::function<int(int,int)>的作用就类似于int和auto。
原文:https://www.cnblogs.com/knight-wjj/p/15076693.html