lambda

简介: lambda

1.介绍

lambda 函数是 C++11 引入的一种新特性,它允许你定义一个匿名的函数对象,可以用来作为参数传递给其他函数或算法。lambda 函数的语法非常简洁,可以让你在不定义完整函数的情况下快速实现简单的功能。

lambda 函数的语法如下:

[capture list] (parameters) -> return type { function body }

其中,capture list 是捕获列表,用于指定 lambda 函数可以访问哪些外部变量;parameters 是参数列表,与普通函数的参数列表相同;return type 是返回类型,可以省略,编译器会自动推断;function body 是函数体,包含 lambda 函数的实现。

2.例子

下面是一个简单的示例,演示如何使用 lambda 函数:

#include <iostream>
#include <vector>
#include <algorithm>
int main() {
    std::vector<int> v = {1, 2, 3, 4, 5};
    int sum = 0;
    std::for_each(v.begin(), v.end(), [&sum](int x) {
        sum += x;
    });
    std::cout << "Sum: " << sum << std::endl;
    return 0;
}

在这个示例中,我们定义了一个 std::vector 对象 v,并使用 std::for_each() 算法遍历它。std::for_each() 算法接受一个函数对象作为参数,并对容器中的每个元素调用这个函数对象。

我们使用 lambda 函数作为 std::for_each() 算法的第三个参数。这个 lambda 函数接受一个整数参数 x,并将其累加到外部变量 sum 中。由于我们需要在 lambda 函数中修改外部变量 sum 的值,所以我们在捕获列表中使用了引用捕获 [&sum]

这段代码的输出结果是:

Sum: 15

注意捕获列表是可选的,如果不需要访问外部变量,那么可以省略捕获列表。例如:

std::thread t([](){
    std::cout << "Hello from thread" << std::endl;
});

在这个示例中,我们创建了一个线程 t,它执行一个没有捕获列表的 lambda 函数。这个 lambda 函数输出一行文本,然后结束。

相关文章
|
6月前
lambda中orElse(null)使用
lambda中orElse(null)使用
149 0
|
11月前
|
Python
lambda
lambda 是一个匿名函数,它通常用于简化代码,使代码更简洁、易读。lambda 函数不需要显式地使用 def 关键字进行定义,可以直接在表达式中使用。它的语法如下:
170 6
|
11月前
|
SQL Java 程序员
聊聊lambda
聊聊lambda
44 1
|
6月前
|
C#
C# Lambda
C# Lambda
41 0
|
11月前
获取lambda
获取lambda
49 0
|
11月前
lambda小技巧
lambda小技巧
55 0
|
安全 架构师 Java
必须掌握的 Lambda 表达式
必须掌握的 Lambda 表达式
5897 1
必须掌握的 Lambda 表达式
|
算法 编译器
【lambda函数】lambda()函数
【lambda函数】lambda()函数
|
设计模式 Java API
值得使用Lambda的8个场景,别再排斥它了!
前言 可能对不少人来说,Lambda显得陌生又复杂,觉得Lambda会导致代码可读性下降,诟病Lambda语法,甚至排斥。
|
Java 开发者
lambda让代码更优雅
Lambda表达式是Java 8中引入的一个重要特性,它允许开发者以更简洁的方式编写匿名函数,使得代码更加紧凑和易读。Lambda表达式是函数式编程的一种体现,可以将函数作为方法的参数传递,并且可以使用更简洁的语法实现函数式接口(只有一个抽象方法的接口)的实例化。Lambda表达式的语法形式为 (参数列表) -> {表达式或语句块}。
80 0