21xrx.com
2024-11-22 07:41:21 Friday
登录
文章检索 我的文章 写文章
C++ Lambda 匿名函数
2023-07-13 04:12:42 深夜i     --     --
C++ Lambda 匿名函数

Lambda表达式是C++ 11提供的一种新函数,它允许我们定义匿名函数并在需要时使用它们。Lambda表达式是一种便捷的方式,它可以让我们定义简短的代码块,而不需要编写整个函数。C++ lambda表达式以[]开始,后跟函数体,如下所示:


[捕获列表] (参数列表) -> 返回类型 {函数体}

捕获列表允许我们从lambda函数定义外部访问的变量。参数列表定义了传递给lambda函数的参数,可以省略。返回类型定义了lambda函数的返回类型,也可以省略。函数体是lambda函数的代码。

下面是在C++中使用lambda表达式的示例:


#include <iostream>

#include <vector>

#include <algorithm>

int main() {

 std::vector<int> v 2;

 // Lambda function to print the elements of vector

 std::for_each(v.begin(), v.end(), [](int i) std::cout << i << " "; );

 

 std::cout << std::endl;

 

 // Lambda function to find the even numbers in vector

 auto even = [](int i) return i % 2 == 0; ;

 std::vector<int> even_numbers;

 std::copy_if(v.begin(), v.end(), std::back_inserter(even_numbers), even);

 // Print the even numbers

 std::for_each(even_numbers.begin(), even_numbers.end(), [](int i) std::cout << i << " "; );

 

 return 0;

}

在这个例子中,我们使用std::for_each和std::copy_if函数来在lambda函数中处理vector中的元素。我们定义了一个lambda函数来打印vector的元素,另一个lambda函数来查找偶数。我们使用auto关键字自动推断lambda函数的返回类型。

Lambda表达式可以是任何可调用对象,包括函数指针,函数对象和成员函数指针。Lambda表达式在编写简短的代码块时非常有用,而不必编写整个函数。Lambda表达式也可以以各种方式捕获变量,使得函数更加灵活和可适应性。

总之,C++ lambda表达式提供了一种方便的方式来定义匿名函数并在需要时使用它们。它们是C++ 11的一个有用扩展,使得在编写简短的代码块时更加方便和简单。通过lambda表达式,我们可以更灵活地编写代码,更好地控制程序的行为。

  
  

评论区

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