C 學習 Lambda表示式

2021-09-02 14:18:54 字數 1735 閱讀 2749

lambda的形式是[函式物件引數](操作符過載函式引數)某種宣告(例如:mutable)->返回值型別;

lambda的呼叫方式有兩種,一種是直接在整個lambda表示式後面帶上(),因為lambda表示式就是函式指標,函式指標帶上()就是呼叫,另一種是起乙個別名,即使把lambda賦值給乙個變數名,通過變數名+()進行呼叫。

直接看它的定義時非常難懂的,簡單來說[ ]裡的是你可以在lambda表示式中使用的引數,例如:你在類中使用lambda表示式,想在lambda中使用類的變數(包括this指標)那麼你可以通過[ ]給lambda傳遞。

1.空:lambda表示式不使用在同一塊語句的變數,例如:

2.=:在塊語句內的區域性變數都以值傳遞的方式傳遞給lambda,例如:[=]

3.&:塊語句內的區域性變數以引用方式傳遞給lambda,例如:[&]

4.指定某個變數傳遞,例如:[a],[&a]

值傳遞的方式在lambda不能對變數做出修改,例如:[a]();在函式體中,只能訪問變數a,不能對變數a做出修改。想要修改a的值可以用引用的方式傳遞[&a];也可以宣告為mutable,例如:[a]()mutable;那麼在中可以修改a的值,但這個a是函式體的副本,不是外部的a。

#include#include#includeusing namespace std;

void main()

;//值傳遞

f();//呼叫lambda

cout << a << endl;

auto f2 = [&a]();//引用

f2();//呼叫lambda

由列印結果可以區分mutable[&]的區別。

lambda接收引數,引數用()傳遞,例如:

[ ](int a,int b);

#include#include#includeusing namespace std;

void main()

; add(a, b);//傳參

system("pause");

}

lambda表示式中若有返回值,可以通過->返回值型別指定,例如:

#include#include#includeusing namespace std;

void main()

; cout<

system("pause");

}

C 學習 lambda表示式

c 中 lambda表示式作為一種內聯函式使用,可以將乙個lambda表示式賦給乙個委託 c 3.0 lambda表示式 是乙個特殊的匿名函式,是一種高效的類似於函式式程式設計的表示式,lambda簡化了開發中需要編寫的 量。它可以包含表示式和語句,並且可用於建立委託或表示式目錄樹型別,支援帶有可繫...

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

lambda表示式學習

lambda表示式的基本形式,如下 capture list params list key word mutuble return type說明 1 capture list 裡面的內容具體形式如下 2 params list 輸入引數,這個和普通的函式一樣 3 keyword mutuble 預...