函数式编程Lambda表达式的应用

尽管 C++ 主要是一种面向对象的语言,但它也支持函数式编程的部分特性,如高阶函数、匿名函数(Lambda 表达式)和不可变数据结构。

Lambda表达式的应用

它是 C++11 的重要特性,允许在函数内部定义匿名函数,可以捕获作用域中的变量,并用于许多常见的函数式编程。举个例子,如下所示:

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    std::vector<int> numbers = {1, 2, 3, 4, 5};
    int factor = 2;

    // 使用 Lambda 表达式捕获外部变量 factor
    std::transform(numbers.begin(), numbers.end(), numbers.begin(),
                   [factor](int n) { return n * factor; });

    // 输出变换后的结果
    for (int num : numbers) {
        std::cout << num << " ";  // 输出:2 4 6 8 10
    }
    std::cout << std::endl;

    // 修改捕获方式,捕获变量的引用
    std::for_each(numbers.begin(), numbers.end(),
                  [&factor](int &n) { n += factor; });

    for (int num : numbers) {
        std::cout << num << " ";  // 输出:4 6 8 10 12
    }

    return 0;
}

上述代码中 Lambda 表达式可以通过捕获列表([])捕获作用域中的变量。捕获方式有两种:按值捕获(如 [factor])和按引用捕获(如 [&factor])。如果是按值捕获时,Lambda 内部使用捕获变量的副本。如果是按引用捕获时,Lambda 内部使用捕获变量的引用,因此可以修改原变量的值。

今天的文章分享就到这里了,希望对大家的学习和工作有所帮助哦~ 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值