中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

C++ lambda捕獲是怎么工作的

c++
小樊
82
2024-07-05 18:51:29
欄目: 編程語言

在C++中,lambda表達式可以通過捕獲列表來捕獲外部變量。捕獲列表指定了lambda表達式可以訪問的外部變量,可以是按值捕獲或按引用捕獲。

按值捕獲會在lambda表達式創建時將外部變量的副本保存在lambda內部,而按引用捕獲則通過引用直接訪問外部變量。按值捕獲可以保證lambda表達式在之后訪問的變量值不會被修改,而按引用捕獲則可以更改外部變量的值。

捕獲列表可以通過以下方式來指定:

  • [ ]:空捕獲列表,不捕獲任何外部變量。
  • [var]:按值捕獲變量var。
  • [&var]:按引用捕獲變量var。
  • [=]:按值捕獲所有外部變量。
  • [&]:按引用捕獲所有外部變量。

示例:

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

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

    x = 30;
    y = 40;

    lambda(); // 輸出 x = 10, y = 40

    return 0;
}

在上面的示例中,變量x按值捕獲,lambda表達式創建時保存了變量x的副本。而變量y按引用捕獲,lambda表達式直接訪問外部變量y。

0
宝应县| 合江县| 海口市| 韩城市| 江油市| 玛曲县| 五寨县| 南丹县| 竹溪县| 安岳县| 姜堰市| 米脂县| 郯城县| 蒙城县| 新安县| 称多县| 陇川县| 衡水市| 石景山区| 喀喇沁旗| 突泉县| 论坛| 拜城县| 达日县| 遵义市| 新巴尔虎左旗| 白山市| 都昌县| 浑源县| 邻水| 遂溪县| 黎城县| 济南市| 正镶白旗| 同仁县| 南郑县| 交城县| 吉水县| 繁峙县| 东海县| 泸溪县|