寒假蓝桥杯学习01

Lambda 表达式是 C++11 引入的一种非常方便和强大的功能,它允许你创建简洁、匿名的函数对象。在许多情况下,Lambda 表达式可以使代码更简洁、易读。接下来,我会详细介绍 C++ Lambda 表达式的基本概念、语法以及一些使用场景。

  1. Lambda 表达式基本概念
    Lambda 表达式是一个匿名的内联函数,它可以捕获外部作用域中的变量并在其内部使用。Lambda 表达式的结果是一个可调用的函数对象,你可以将其赋值给一个变量,或者直接调用它。

  2. Lambda 表达式语法
    Lambda 表达式的基本语法如下:

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

capture:捕获列表,用于捕获外部作用域中的变量。
parameters:参数列表,和普通函数的参数列表类似。
return_type:返回类型,可以省略,编译器会根据函数体的内容自动推导。
body:函数体。

  1. 捕获列表
    捕获列表用于指定 Lambda 表达式可以访问的外部作用域中的变量。捕获列表可以有以下几种形式:

[=]:以值捕获所有外部作用域的变量。
[&]:以引用捕获所有外部作用域的变量。
[x]:以值捕获变量 x。
[&x]:以引用捕获变量 x。
[=, &x]:以值捕获所有变量,但是以引用捕获变量 x。
[&, x]:以引用捕获所有变量,但是以值捕获变量 x。

  1. 示例
    以下是一些使用 Lambda 表达式的简单示例:

例1:一个简单的 Lambda 表达式,没有参数、捕获和返回值。

#include <iostream>

int main() {
    auto hello = [] { std::cout << "Hello, Lambda!" << std::endl; };
    hello(); // 输出:Hello, Lambda!
    return 0;
}

例2:一个带参数的 Lambda 表达式,计算两个整数的和。

#include <iostream>

int main() {
    auto sum = [](int a, int b) { return a + b; };
    std::cout << "3 + 4 = " << sum(3, 4) << std::endl; // 输出:3 + 4 = 7
    return 0;
}

例3:一个捕获外部变量的 Lambda 表达式,计算平方。

#include <iostream>

int main() {
    int x = 3;
    auto square = [x] { return x * x; };
    std::cout << "x * x = " << square() << std::endl; // 输出:x * x = 9
    return 0;
}
  1. 使用场景
    Lambda 表达式在很多场景下都非常有用,例如:
    作为参数传递给其他函数,如 std::sort, std::find_if 等。
    简化一些简单的函数定义,使代码更简洁。
    用于创建自定义的比较函数或谓词函数。
posted @   aallofitisst  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix
点击右上角即可分享
微信分享提示