c++中lamda函数
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中的元素并输出
原文地址: https://www.cveoy.top/t/topic/hgt8 著作权归作者所有。请勿转载和采集!