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

溫馨提示×

C++ lambda捕獲和引用捕獲區別

c++
小樊
92
2024-07-05 18:54:24
欄目: 編程語言

在C++中,lambda函數可以通過捕獲列表來捕獲外部變量。有兩種捕獲方式:值捕獲和引用捕獲。

  1. 值捕獲:當使用值捕獲時,lambda函數會將外部變量的值拷貝到lambda函數內部,這樣lambda函數就可以在其生命周期內訪問這個值,而不受外部變量的改變影響。
int x = 10;
auto lambda = [x](){
    std::cout << x << std::endl;
};
x = 20;
lambda(); // 輸出10
  1. 引用捕獲:當使用引用捕獲時,lambda函數會直接引用外部變量,在lambda函數的生命周期內,外部變量的改變會影響lambda函數內部對該變量的訪問。
int x = 10;
auto lambda = [&x](){
    std::cout << x << std::endl;
};
x = 20;
lambda(); // 輸出20

因此,值捕獲會在lambda函數內部創建一個變量的拷貝,而引用捕獲會直接引用外部變量。選擇捕獲方式取決于具體需求,需要注意避免引用捕獲時外部變量被銷毀導致懸空指針的問題。

0
卢湾区| 淄博市| 方正县| 太康县| 延庆县| 余江县| 安溪县| 合阳县| 周至县| 锦州市| 内黄县| 甘洛县| 通化县| 南通市| 仪陇县| 托里县| 云林县| 新巴尔虎右旗| 那曲县| 和政县| 阳原县| 南涧| 裕民县| 湖北省| 安阳县| 进贤县| 利辛县| 松溪县| 苏尼特左旗| 民和| 东乌| 永寿县| 嘉兴市| 伊通| 汝阳县| 河北区| 遂溪县| 长丰县| 阿鲁科尔沁旗| 青铜峡市| 环江|