在main函数中编写匿名函数

好问题!下面我会教你在 C++ 中 如何在 main() 函数中正确编写和使用匿名函数(Lambda 表达式),并配上多个例子,帮助你全面掌握它的写法和用法。


✅ 基本写法

最基础的 Lambda 表达式:

auto 函数名 = [](参数列表) -> 返回类型 {
    // 函数体
};

main() 中定义和使用:

#include <iostream>
using namespace std;

int main() {
    // 定义一个 Lambda 表达式(匿名函数)
    auto sayHello = []() {
        cout << "Hello from Lambda!" << endl;
    };

    // 调用它
    sayHello();  // 输出:Hello from Lambda!

    return 0;
}

✅ 带参数和返回值的 Lambda

#include <iostream>
using namespace std;

int main() {
    // 定义带参数和返回值的 Lambda
    auto add = [](int a, int b) -> int {
        return a + b;
    };

    cout << "3 + 4 = " << add(3, 4) << endl;  // 输出:3 + 4 = 7

    return 0;
}

🔹 注意:-> int 是可选的,如果编译器能自动推导类型,也可以省略。


✅ 带捕获外部变量的 Lambda

#include <iostream>
using namespace std;

int main() {
    int factor = 3;

    // 捕获 factor(值捕获)
    auto multiply = [factor](int x) {
        return x * factor;
    };

    cout << multiply(5) << endl;  // 输出:15

    return 0;
}
捕获方式写法说明
值捕获[=][x]复制外部变量的当前值
引用捕获[&][&x]捕获引用,可修改原变量

✅ 立即执行的 Lambda(IIFE)

#include <iostream>
using namespace std;

int main() {
    // 定义后立即调用
    int result = [](int a, int b) {
        return a * b;
    }(6, 7);  // 直接传入参数

    cout << result << endl;  // 输出:42

    return 0;
}

✅ 总结用法速查表

用法类型示例
最简单[](){ ... }
带参数[](int x){ return x * x; }
带返回类型[](int x)->int { return x + 1; }
捕获外部变量值[x]() { return x + 1; }
捕获引用[&x]() { x += 10; }
立即执行[](int x, int y){ return x + y; }(3, 4);

❓适用场景

  • 你需要在 main() 或某个函数内部定义一个短小、只用一次的函数逻辑

  • 不想为一个小功能写成全局函数(如 bool isEven(int x) 之类)

  • 搭配 STL 算法函数使用(如 sort, for_each, count_if 等)


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值