寒假蓝桥杯学习01
Lambda 表达式是 C++11 引入的一种非常方便和强大的功能,它允许你创建简洁、匿名的函数对象。在许多情况下,Lambda 表达式可以使代码更简洁、易读。接下来,我会详细介绍 C++ Lambda 表达式的基本概念、语法以及一些使用场景。
-
Lambda 表达式基本概念
Lambda 表达式是一个匿名的内联函数,它可以捕获外部作用域中的变量并在其内部使用。Lambda 表达式的结果是一个可调用的函数对象,你可以将其赋值给一个变量,或者直接调用它。 -
Lambda 表达式语法
Lambda 表达式的基本语法如下:
[capture](parameters) -> return_type { body }
capture:捕获列表,用于捕获外部作用域中的变量。
parameters:参数列表,和普通函数的参数列表类似。
return_type:返回类型,可以省略,编译器会根据函数体的内容自动推导。
body:函数体。
- 捕获列表
捕获列表用于指定 Lambda 表达式可以访问的外部作用域中的变量。捕获列表可以有以下几种形式:
[=]:以值捕获所有外部作用域的变量。
[&]:以引用捕获所有外部作用域的变量。
[x]:以值捕获变量 x。
[&x]:以引用捕获变量 x。
[=, &x]:以值捕获所有变量,但是以引用捕获变量 x。
[&, x]:以引用捕获所有变量,但是以值捕获变量 x。
- 示例
以下是一些使用 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;
}
- 使用场景
Lambda 表达式在很多场景下都非常有用,例如:
作为参数传递给其他函数,如 std::sort, std::find_if 等。
简化一些简单的函数定义,使代码更简洁。
用于创建自定义的比较函数或谓词函数。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧
· 园子的第一款AI主题卫衣上架——"HELLO! HOW CAN I ASSIST YOU TODAY
· 【自荐】一款简洁、开源的在线白板工具 Drawnix