72、Lambda 表达式
// 指明返回类型,托尾返回类型
auto add = [](int a, int b) -> int { return a + b; };
// ⾃动推断返回类型
auto multiply = [](int a, int b) { return a * b; };
int sum = add(2, 5); // 输出:7
int product = multiply(2, 5); // 输出:10Last updated
// 指明返回类型,托尾返回类型
auto add = [](int a, int b) -> int { return a + b; };
// ⾃动推断返回类型
auto multiply = [](int a, int b) { return a * b; };
int sum = add(2, 5); // 输出:7
int product = multiply(2, 5); // 输出:10Last updated
int main() {
int x = 10;
auto add_x = [x](int a) { return a + x; }; // 复制捕捉x,lambda 表达式⽆法修改此变量
auto multiply_x = [&x](int a) { return a * x; }; // 引⽤捕捉x,lambda 表达式可以修改此变量
cout << add_x(10) << " " << multiply_x(10) << endl; // 输出:20 100
return 0; }int val = 3;
vector v {1, 8, 5, 3, 6, 10};
int count = std::count_if(v.beigin(), v.end(), [val](int x) { return x > val; });
// v中⼤于3的元素数[ capture-list ] ( params ) mutable(optional) constexpr(optional)(c++17)
exception attribute -> ret { body }
// 可选的简化语法
[ capture-list ] ( params ) -> ret { body }
[ capture-list ] ( params ) { body }
[ capture-list ] { body }