Laravel  
laravel
文档
数据库
架构
入门
php技术
    
Laravelphp
laravel / php / java / vue / mysql / linux / python / javascript / html / css / c++ / c#

c++lambda表达式

作者:〖掉望   发布日期:2025-08-02   浏览:75

#include <iostream>
#include <vector>
#include <algorithm>

int main() {
    // 定义一个简单的lambda表达式,捕获外部变量x
    int x = 10;
    auto lambda1 = [x]() {
        std::cout << "Value of x: " << x << std::endl;
    };
    lambda1();  // 输出: Value of x: 10

    // 定义一个带有参数的lambda表达式
    auto lambda2 = [](int a, int b) {
        return a + b;
    };
    std::cout << "Sum: " << lambda2(5, 3) << std::endl;  // 输出: Sum: 8

    // 使用lambda表达式作为std::sort的比较函数
    std::vector<int> vec = {5, 2, 8, 1, 9};
    std::sort(vec.begin(), vec.end(), [](int a, int b) {
        return a > b;
    });
    for (int num : vec) {
        std::cout << num << " ";  // 输出: 9 8 5 2 1
    }
    std::cout << std::endl;

    // 捕获列表可以包含多个变量,并且可以按值或按引用捕获
    int y = 20;
    auto lambda3 = [&x, y]() mutable {
        x += y;
        std::cout << "Updated value of x: " << x << std::endl;
    };
    lambda3();  // 输出: Updated value of x: 30

    return 0;
}

解释说明:

  1. lambda1:这是一个简单的lambda表达式,它捕获外部变量x(按值捕获)。lambda表达式内部不能修改捕获的变量。
  2. lambda2:这是一个带有参数的lambda表达式,它接受两个整数并返回它们的和。
  3. std::sort中的lambda:这里使用了一个lambda表达式作为std::sort的比较函数,使得排序结果是降序排列。
  4. lambda3:这个lambda表达式捕获了x(按引用捕获)和y(按值捕获),并且通过mutable关键字允许修改捕获的变量。

希望这些示例能帮助你理解C++中的lambda表达式。

上一篇:c++编译

下一篇:c++if语句

大家都在看

c++闭包

c++单引号和双引号的区别

c++ 注释

c++如何判断素数

c++freopen怎么用

c++ 获取系统时间

c++进制转换函数

c++ vector 清空

c++ tcp

c++ gcd函数

Laravel PHP 深圳智简公司。版权所有©2023-2043 LaravelPHP 粤ICP备2021048745号-3

Laravel 中文站