亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

深入理解C++ lambda捕獲機制

c++
小樊
88
2024-07-05 18:58:23
欄目: 編程語言

在C++中,lambda表達式是一種匿名函數,可以在函數內部定義并使用,而不需要單獨聲明函數。lambda表達式可以捕獲外部作用域的變量,以便在lambda函數體內使用。

在lambda表達式中,可以使用以下方式來捕獲外部變量:

  1. 按值捕獲:通過值傳遞方式捕獲外部變量,lambda函數內部可以修改外部變量的副本,但不會影響外部變量本身。
  2. 按引用捕獲:通過引用傳遞方式捕獲外部變量,lambda函數內部可以修改外部變量的值,會直接影響外部變量本身。
  3. 按引用捕獲(mutable):通過引用傳遞方式捕獲外部變量,但在lambda函數內部可以修改外部變量的值,不會影響外部變量本身。

示例代碼:

#include <iostream>

int main() {
    int x = 10;
    int y = 20;

    // 按值捕獲
    auto lambda1 = [x, y]() {
        std::cout << "x: " << x << ", y: " << y << std::endl;
    };

    // 按引用捕獲
    auto lambda2 = [&x, &y]() {
        x = 100;
        y = 200;
        std::cout << "x: " << x << ", y: " << y << std::endl;
    };

    // 按引用捕獲(mutable)
    auto lambda3 = [&x, &y]() mutable {
        x = 100;
        y = 200;
        std::cout << "x: " << x << ", y: " << y << std::endl;
    };

    lambda1();
    lambda2();
    lambda3();

    std::cout << "x: " << x << ", y: " << y << std::endl;

    return 0;
}

在上面的示例代碼中,我們定義了三個lambda表達式,分別按值捕獲、按引用捕獲和按引用捕獲(mutable)外部變量x和y。通過調用這些lambda表達式,我們可以看到它們對外部變量的影響不同。lambda1只讀取外部變量的值,不會影響外部變量本身;lambda2和lambda3修改了外部變量的值,會影響外部變量本身。

0
蕉岭县| 漳平市| 成安县| 饶阳县| 安新县| 高阳县| 普洱| 北辰区| 哈尔滨市| 西华县| 淮阳县| 梅州市| 余江县| 缙云县| 康马县| 铜鼓县| 兴和县| 玛沁县| 龙江县| 壤塘县| 双江| 老河口市| 双鸭山市| 理塘县| 吉木萨尔县| 罗山县| 吐鲁番市| 会泽县| 西贡区| 华阴市| 双城市| 丽江市| 石柱| 石家庄市| 大港区| 红桥区| 西盟| 上栗县| 伊吾县| 大洼县| 永州市|