91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

深入理解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
新源县| 北安市| 龙陵县| 重庆市| 克拉玛依市| 政和县| 荆门市| 徐闻县| 通江县| 佛教| 丹棱县| 兰溪市| 红桥区| 上林县| 济南市| 曲阜市| 四会市| 宝鸡市| 朝阳县| 英德市| 军事| 克山县| 阜新市| 岑巩县| 衡水市| 光山县| 辉南县| 金寨县| 富宁县| 手机| 临沧市| 伊吾县| 谢通门县| 仁寿县| 营口市| 靖西县| 宁南县| 冷水江市| 万年县| 惠水县| 汾西县|