C++11中Lambda的用法

在C++11中,Lambda表达式是一种匿名函数的形式,它可以在需要函数对象的地方使用。Lambda表达式的基本语法如下:

[capture](parameters) -> return_type { body }

其中,capture是可选的,用于捕获外部变量;parameters是参数列表;return_type是返回类型;body是函数体。

下面是一些Lambda的用法示例:

  1. 无参数的Lambda表达式:
[]() { 
    // Lambda body
};
  1. 带参数的Lambda表达式:
[](int x, int y) {
    // Lambda body
};
  1. 带返回值的Lambda表达式:
[](int x, int y) -> int {
    // Lambda body
    return x + y;
};
  1. 捕获外部变量的Lambda表达式:
int x = 5;
[y]() {
    // Lambda body
    std::cout << y << std::endl;
};

在Lambda表达式中,可以使用捕获列表来捕获外部变量。捕获列表可以有以下几种形式:

  • [var]:值捕获,将外部变量var的值复制到Lambda表达式中;
  • [&var]:引用捕获,将外部变量var作为引用传递给Lambda表达式;
  • [=]:默认值捕获,自动推导捕获列表中的变量,并按值捕获;
  • [&]:默认引用捕获,自动推导捕获列表中的变量,并按引用捕获。

Lambda表达式在C++11中引入了一种更简洁、灵活的函数定义方式,使得代码更加清晰和易读。

你可能感兴趣的:(c++,开发语言)