21xrx.com
2024-09-17 04:26:23 Tuesday
登录
文章检索 我的文章 写文章
C++ lambda表达式
2023-06-24 08:38:23 深夜i     --     --
C++ Lambda表达式 函数式编程 高阶函数 闭包

C++ lambda表达式是一种可以在程序运行时定义匿名函数的语言特性。它在C++11标准中被引入,为程序员提供了一种更为方便快捷的定义函数的方法。

Lambda表达式的语法很简单,由一对方括号和一个函数体组成。方括号中指定函数参数,可以为空;函数体中编写实际的计算逻辑。例如:


auto sum = [](int a, int b) -> int { return a + b; };

int result = sum(1, 2);  // result = 3

在这个例子中,我们定义了一个接收两个整数参数的lambda表达式,返回它们的和。关键字`auto`表示编译器应该自动推断该lambda表达式的类型。箭头`->`和返回类型`int`表示表达式的返回值是一个整数。

我们也可以使用lambda表达式来编写比较器函数,尤其适用于STL中的算法函数:


std::vector<int> vec = 3;

auto cmp = [](int a, int b) -> bool return a < b; ;

std::sort(vec.begin(), vec.end(), cmp);

在这个例子中,我们定义了一个接收两个整数参数的lambda表达式,返回值为`bool`。该表达式用作STL算法函数`std::sort`的第三个参数,指定排序规则为升序。

除此之外,我们还可以使用lambda表达式来定义函数对象,传递给其他函数调用:


#include <functional>

#include <iostream>

int main()

{

  std::function<int(int)> make_double = [](int n) -> int { return n * 2; };

  std::cout << make_double(3) << std::endl;  // 6

}

在这个例子中,我们定义了一个函数对象`make_double`,它接收一个整数参数,并返回它的两倍。`std::function`是一个通用函数对象类型,它抽象了函数指针和其他函数对象类型,可以用于传递任何可调用对象。

总之,C++ lambda表达式是一种非常方便的语言特性,它允许程序员定义匿名函数,简化代码编写,提高程序的可读性和可维护性。在实际的程序开发中,我们可以灵活运用lambda表达式,让程序更加简洁高效。

  
  

评论区

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