C Lambda函式(匿名函式) 使用方法

2021-08-04 08:12:05 字數 645 閱讀 8069

乙個lambda表示式表示乙個可呼叫的**單元,可以理解為未命名的內聯函式。乙個lambda表示式具有返回型別、引數列表、函式體。

一般lambda表示式具有如下的形式:  

[capture list] (parameter list) -> return type
其中:

capture list:捕獲列表(lambda表示式所在的函式中定義的區域性變數的列表)(通常為空)

parameter list :引數列表

return type:返回型別

function body:函式體

需要注意的是:一般時候,使用lambda表示式可以忽略lambda的引數列表和返回型別(原因下面再說)。

例子1:

void func_1()

; //預設情況下,對於乙個值被拷貝的變數,lambda不會改變其值,如果我們希望能改變乙個**獲的變數的值,就必須加上關鍵字mutable。

a=10;;

func_lambda_3();  

} //所以可變lambda可以省略引數列表

C Lambda匿名函式表示式

函式物件引數 形參 mutable 或 exception 宣告 返回值型別 表示表示式的開始,必須有 用來設定如何捕獲匿名函式外的變數 裡為空,表示任何變數都不會傳遞給lambda表示式,沒有引數 int a 10 int b 20 intc int x int 不能捕獲匿名函式外的所有變數 st...

C lambda函式總結

c11新增加的特性,不過現在都c20了不新了。捕捉列表 引數 屬性 返回值型別引出符 因為lambda無法直接使用區域性變數,所以需要對變數進行捕捉,也就是需要通過捕捉列表通知c 這些變數我要拿來用。包含幾種不同的形式 形式 作用 x 表示以值傳遞的方式獲得變數x 表示以值傳遞的方式獲取所有父作用域...

C lambda 函式物件 函式指標(函式名)

stl演算法中通常會傳入乙個謂詞來實現自定義的排序,查詢數值等行為。lambda 函式物件 函式指標 函式名 均可以在這個情境中傳遞資訊。在這種情境下對比一下三者的使用 1.傳入函式指標 函式名 例如,count if 函式的第三個引數是乙個一元謂詞。若判數乙個數能否被3整除,則定義函式 bool ...