C++中Lambda表达式

  1. Lambda表达式是一种匿名函数,可以在程序中直接定义和使用,不需要单独命名。
  2. 提供一种方便的方式来定义行为,在需要将函数作为参数传递给其他函数或者需要一个临时的函数对象时非常有用。
  3. Lambda表达式的一般语法:
[capture list] (parameter list) -> return type 
{
   // 函数体
};
  • capture list:用来捕获外部变量的列表,可以是空的,按值捕获或按引用捕获。实际上,[ ]是Lambda引出符,编译器根据该引出符判断接下来的代码是否是Lambda函数,捕获列表能够捕捉上下文中的变量以供Lambda函数使用。
  • parameter list:Lambda表达式的参数列表,可以为空或包含一个或多个参数。若不需要参数传递,可以连同()一起省略。
  • return type:返回值的类型,可以省略。如果省略则根据返回值推断类型。

        4.ISO C++标准官网展示的简单的lambda表示式示例:

#include <algorithm>
#include <cmath>

void abssort(float* x, unsigned n) 
{
    std::sort(x, x + n,
        // Lambda expression begins
        [](float a, float b) 
        {
            return (std::abs(a) < std::abs(b));
        } 
        // end of lambda expression
             );
}
  • std::sort()函数的第三个参数是传递一个排序规则的函数,实例中直接将排序函数的实现写在应该传递函数的位置,省去了定义排序函数的过程。
  • 对于这种不需要复用且短小的函数,直接传递函数体可以增加代码的可读性。

        5. 示例2:Lambda表达式定义了一个求两个数的和的函数。通过auto关键字定义了一个变量sum来接收Lambda表达式,然后使用sum变量来调用Lambda表达式并传入参数。

#include <iostream>

int main() {
    int x = 5;
    int y = 2;
    
    // Lambda表达式,求两个数的和
    auto sum = [](int a, int b) -> int {
        return a + b;
    };
    
    // 调用Lambda表达式
    int result = sum(x, y);
    std::cout << "Sum: " << result << std::endl;
    
    return 0;
}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值