21xrx.com
2024-12-23 01:24:21 Monday
登录
文章检索 我的文章 写文章
C++ Lambda 函数简介
2023-06-27 21:09:15 深夜i     --     --
C++ Lambda函数 简介

C++ Lambda 函数是 C++11 新标准所引入的一种匿名函数,它可以像普通函数一样使用,但不需要命名,也不需要定义在函数体外部。Lambda 函数可以作为其他函数的参数,也可以返回一个函数对象。在 C++11 之前,要实现类似 Lambda 函数的功能,需要定义函数对象或使用函数指针。

C++ Lambda 函数可以具有捕获列表、参数列表和函数体,语法如下:


[capture](parameters) -> return_type

  // function body

其中 capture 是捕获列表,用于捕获 Lambda 函数外部的变量;parameters 是参数列表,用于接收其他函数传入的参数;return_type 是函数返回值类型;function body 是函数体,和普通函数一样。

捕获列表包括两种捕获方式:按值捕获和按引用捕获。按值捕获可以通过在捕获变量名前加上“=”来实现;按引用捕获则把“&”符号加到变量名前。例如:


int x = 10;

auto lambda_1 = [=](){return x}; // 按值捕获 x

auto lambda_2 = [&](){x=20};   // 按引用捕获 x

Lambda 函数可以在其他函数中使用,例如:


#include <iostream>

#include <vector>

#include <algorithm>

int main() {

  std::vector<int> v = 9;

  int count = 0;

  std::for_each(v.begin(), v.end(), [&count](int n){ count += (n%2 == 0); });

  std::cout << "There are " << count << " even numbers in the vector." << std::endl;

  return 0;

}

上面的代码使用 Lambda 函数统计一个 vector 中的偶数个数,并输出结果。通过使用 Lambda 函数,可以简化代码,并使其更易于读取和理解。

总之,C++ Lambda 函数是一种强大的语言特性,可以提高程序的简洁性和可读性,让代码更加清晰明了,同时也可以提升程序的执行效率。

  
  

评论区

{{item['qq_nickname']}}
()
回复
回复