函数式编程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 内部使用捕获变量的引用,因此可以修改原变量的值。

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

本文是转载文章,点击查看原文
如有侵权,请联系 lx@jishuguiji.net 删除。