Lambda函数是C++11中引入的一种匿名函数,允许在函数内部定义一个函数对象,可以方便地定义、传递和使用函数对象。

Lambda函数的语法如下:

[capture list] (parameters) -> return_type { function_body }

其中,capture list表示捕获列表,用于指定Lambda函数使用的外部变量;parameters表示参数列表;return_type表示返回值类型;function_body表示Lambda函数的函数体。

Lambda函数的捕获列表可以通过以下方式指定:

  • []:不捕获任何外部变量。
  • [var]:捕获变量var。
  • [&var]:以引用方式捕获变量var。
  • [=]:以值方式捕获所有可见的外部变量。
  • [&]:以引用方式捕获所有可见的外部变量。

Lambda函数的参数列表和返回值类型可以省略,编译器可以自动推导。

Lambda函数的函数体可以包含任意合法的语句和表达式,也可以使用C++11中的新特性,如auto关键字、range-based for循环等。

下面是一个Lambda函数的示例:

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

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

    std::for_each(vec.begin(), vec.end(), [](int x) {
        std::cout << x << " ";
    }); // 输出:1 2 3 4 5

    return 0;
}

在上面的示例中,Lambda函数使用了捕获列表[],参数列表(int x),返回值类型(void),函数体(std::cout << x << " ")。该Lambda函数被传递给了std::for_each算法,用于遍历vector中的元素并输出

c++中lamda函数

原文地址: https://www.cveoy.top/t/topic/hgt8 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录