Lambda表达式

lambda 表达式是一种在代码中直接创建匿名函数(即没有名称的函数)的方法。它们特别适用于需要传递给算法或事件处理器的简短、一次性使用的函数。

基本语法

C++ lambda 表达式的基本语法如下:

cpp 复制代码
[capture](parameters) -> return_type {
    // 函数体
};
解释:
  • [capture] :捕获列表,用于指定 lambda 表达式中可以访问的外部变量。捕获方式包括值捕获(=)、引用捕获(&),或者显式指定捕获的变量。
  • (parameters):参数列表,与普通函数的参数列表类似。
  • -> return_type:可选的返回类型声明,如果省略,编译器会自动推导返回类型。
  • {}:函数体,包含实际执行的代码。

示例

以下是一些常见的示例:

无参数、无返回值的 lambda 表达式:
cpp 复制代码
auto myLambda = []() {
    std::cout << "Hello, World!" << std::endl;
};

myLambda();  // 输出:Hello, World!

有参数、有返回值的 lambda 表达式:

cpp 复制代码
auto add = [](int a, int b) -> int {
    return a + b;
};

int result = add(3, 4);  // result 为 7

使用捕获列表:

cpp 复制代码
int x = 10;
auto printX = [x]() {
    std::cout << "x = " << x << std::endl;
};

printX();  // 输出:x = 10

在这个例子中,x 被值捕获到 lambda 表达式中,即使之后 x 的值发生变化,lambda 表达式中 x 的值仍然保持不变。

C++ lambda 表达式功能强大,常用于 STL 算法中。例如:

cpp 复制代码
std::vector<int> numbers = {1, 2, 3, 4, 5};
int sum = 0;

std::for_each(numbers.begin(), numbers.end(), [&sum](int n) {
    sum += n;
});

std::cout << "Sum = " << sum << std::endl;  // 输出:Sum = 15

在这个例子中,sum 通过引用捕获,lambda 表达式会将每个数字累加到 sum 中。

相关推荐
Am-Chestnuts几秒前
通义千问任务清单怎么导出Word?用DS随心转保留层级和勾选项
开发语言·c#·word
LuminousCPP1 分钟前
数据结构 - 排序(二):快速排序从错误初版到优化版|双指针划分 + 三数取中 + 小区间插入优化
c语言·数据结构·笔记·算法·排序算法
hansang_IR11 分钟前
【题解】P9753 [CSP-S 2023] 消消乐
数据结构·c++·算法
liliangcsdn12 分钟前
基于信号强度的稀疏选股算法的探索分析
开发语言·python
竞赛考级题库16 分钟前
202606 青少年等级考试C/C++真题一级 建议答题时长:60min
java·c语言·c++
4SAPI17 分钟前
2026年大模型API接入选型指南:企业与个人用户的架构、稳定性与成本考量
大数据·开发语言·数据库·人工智能·架构·php
lmy_loveF22 分钟前
go 切换go version 版本
开发语言·后端·golang
shehuiyuelaiyuehao25 分钟前
算法40,模拟运算,替换所有的问号
数据结构·算法·leetcode
小白快快跑哦27 分钟前
python-字符串全解(四):字符串方法
开发语言·python·字符串
linx29528 分钟前
阶段五讲义:STL 全貌——扔掉手写循环,学“动词“
c++