linux

Linux C++编程中如何使用Lambda表达式

小樊
71
2025-05-22 11:36:59
栏目: 编程语言

在Linux下的C++编程中,Lambda表达式是一种非常方便的特性,它允许你在代码中定义匿名函数。Lambda表达式通常用于简化代码,特别是在需要传递一个简单的函数对象或回调函数时。

Lambda表达式的基本语法如下:

[捕获列表](参数列表) -> 返回类型 {
    // 函数体
}

下面是一些使用Lambda表达式的例子:

示例1:基本用法

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

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

    // 使用Lambda表达式对vector进行排序
    std::sort(vec.begin(), vec.end(), [](int a, int b) {
        return a < b;
    });

    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

示例2:捕获外部变量

#include <iostream>
#include <functional>

int main() {
    int x = 10;
    int y = 20;

    // 捕获外部变量x和y
    auto add = [x, y]() {
        return x + y;
    };

    std::cout << "Sum: " << add() << std::endl; // 输出 Sum: 30

    return 0;
}

示例3:混合捕获

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

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

    // 按值捕获factor,按引用捕获vec
    std::transform(vec.begin(), vec.end(), vec.begin(), [factor, &vec](int num) {
        return num * factor;
    });

    for (int num : vec) {
        std::cout << num << " ";
    }
    std::cout << std::endl;

    return 0;
}

示例4:无参数Lambda表达式

#include <iostream>
#include <functional>

int main() {
    // 定义一个无参数的Lambda表达式
    auto sayHello = []() {
        std::cout << "Hello, World!" << std::endl;
    };

    sayHello(); // 调用Lambda表达式

    return 0;
}

Lambda表达式在C++编程中非常有用,特别是在需要传递函数对象或回调函数时。通过合理使用Lambda表达式,可以使代码更加简洁和易读。

0
看了该问题的人还看了