1. 程式人生 > >C++學習 lambda表示式

C++學習 lambda表示式

lambda表示式的語法歸納如下:

[ caputrue ] ( params ) opt -> ret { body; };

1).capture是捕獲列表;

2).params是引數表;(選填)

3).opt是函式選項;可以填mutable,exception,attribute(選填)

mutable說明lambda表示式體內的程式碼可以修改被捕獲的變數,並且可以訪問被捕獲的物件的non-const方法。

exception說明lambda表示式是否丟擲異常以及何種異常。

attribute用來宣告屬性。

4).ret是返回值型別。(選填)

5).body是函式體。

捕獲列表:lambda表示式的捕獲列表精細控制了lambda表示式能夠訪問的外部變數,以及如何訪問這些變數。

1).[]不捕獲任何變數。

2).[&]捕獲外部作用域中所有變數,並作為引用在函式體中使用(按引用捕獲)。

3).[=]捕獲外部作用域中所有變數,並作為副本在函式體中使用(按值捕獲)。

4).[=,&foo]按值捕獲外部作用域中所有變數,並按引用捕獲foo變數。

5).[bar]按值捕獲bar變數,同時不捕獲其他變數。

6).[this]捕獲當前類中的this指標,讓lambda表示式擁有和當前類成員函式同樣的訪問許可權。如果已經使用了&或者=,就預設新增此選項。捕獲this的目的是可以在lamda中使用當前類的成員函式和成員變數。