[](int a, int b) { return x + y; }
以下函數物件的 Lambda 表示式可以確定某個整數是否為偶數:[](int a) { return a % 2 == 0; }
以下 Lambda 表示式釆用了一個整數作為輸入,然後列印該整數的平方值:[](int a) { cout << a * a << " "; }
以上顯示的 Lambda 表示式其實是函數的基礎定義,但函數的名稱和返回型別則使用 一對空白方括號[]來替代。Lambda 表示式經常釆用以下形式:[捕獲從句](形參列表){函數體}
捕獲從句是 Lambda 表示式作用域中的變數列表,可以從 Lambda 表示式的函數體存取。這與常規函數定義列出所有可以存取的全域性變數相似。本節所使用的 Lambda 表示式均不使用捕獲從句,所以對這個概念不做進一步的討論。int x = 2; int y = 5; cout << [](int a, int b) { return a + b;} (x, y);以下程式碼段將按降序對陣列排序,它使用了 Lambda 表示式來代替函數物件作為排序函數的第 3 個引數:
double d_values[]{ 12.7, 45.9, 6.9}; //以降序排序陣列 sort( begin(d_values), end(d_values),[](auto a, auto b) {return a > b;}); //列印陣列 for (auto x : d_values) { cout << x << " "; }因為 Lambda 表示式是函數物件,所以,可以將 Lambda 表示式賦值給一個型別適合的變數,並通過變數名來呼叫它。
auto compare = [](auto a, auto b) {return a > b;};
這樣做可以將程式碼分割成更小的塊,使它更易讀。以下就是將上面的程式碼段重新編寫,參照變數(變數的值為 Lambda 表示式)之後的結果:double d_values[]{ 12.7, 45.9, 6.9}; // Lambda表示式 auto compare = [](auto a, auto b) {return a > b;}; //以降序排序陣列 sort( begin(d_values), end(d_values),compare); //列印陣列 for (auto x : d_values) { cout << x << " "; }