一、格式

大括號內是變量捕獲,小括號內是參數列表。變量捕獲的來源都是當前位置“能看得見”的變量。
二、 變量捕獲


上圖左:將它“能看得見”的變量都按引用捕獲。 上圖右:將它“能看得見”的變量都按值捕獲。
比如某個lambda表達式在語句塊內,但是它全體引用捕獲的話可以捕獲全局變量

上圖:按值捕獲N, 其余變量按引用捕獲。

上圖:在只有變量M,N的情況下,四個式子等價

在類中捕獲當前實例的指針
在c++14和c++17中有拓展,具體不展示
所有圖片來自https://www.bilibili.com/video/BV1fG41157Ew/?spm_id_from=333.337.search-card.all.click&vd_source=8e542be705d993c91535e3a91be6652f
三、注意
因為它畢竟也是一個表達式,所以
1.lambda表達式末尾必須要有分號
2.可以在語句塊內定義,當然也可以在外面。全局變量之類的可以直接用在函數體里面
3.調用方法和普通函數完全一樣
4.如果沒有參數的話小括號里可以是空的,也可以根本不寫小括號。但這個時候不能寫 ->[返回值]
5.如果lambda表達式沒有參數(比如某個lambda表達式叫f,他沒有參數),調用的時候必須要寫f();如果只寫f的話只是一個lambda表達式,并沒有調用它
6.lambda表達式不能直接輸出(也許通過某種重載可以?)
浙公網安備 33010602011771號