cpp教程10 C 中的lambda

2021-10-13 23:21:56 字數 1188 閱讀 6427

看完c++中的lamda,感覺總體來說,不愧是 c++!乙個lamda 都搞的可以玩出花來!!!

下面我簡單介紹一下lamda表示式在 c++ 中的語法。

作為乙個從 python 來的 c++ 人,我被c++的lamda 震驚了。

以開頭,lambda 語法可以生成乙個臨時的或者說匿名的函式物件,因此可以方便的支援函式式程式設計。

不傳參的版本

[

]

傳參的版本

(

int i)

指定返回值

(

)->

int(

int i)

如果只有一句話,也就是乙個return, 可以不指定返回型別,因為編譯器可以推測出來。

如果你因為lamda這就完了,那麼就想錯了, 其實開頭那個它並不是擺設,它就是拿來獲取區域性變數的。

在沒有用之前,你只能獲取全域性變數,全域性變數不是函式成員變數,而是乙個編譯單元,也就是乙個源**級別的天不管,地不收的變數,現在要獲得區域性變數,也就是lambda所在的{}以內的變數,就用傳參,[=]表示使用全部的區域性變數,但是以傳值的方法,而[&]則表示以傳引用的方法,這裡需要注意的是,謹防物件已經被釋放的情況,因為lambda 函式可以被傳遞出去!

[&][=]還可以混用,比如[&, i, j][=, &i, &j], 以及[i, j],[&i, &j],[this]

捕獲 this 指標 在成員函式中的 lambda 表示式可以捕獲當前物件的 this 指標,讓 lambda 表示式擁有和當前類成員同樣的訪問許可權,可以修改類的成員變數,使用類的成員函式。

最後,this 指標只能按值捕獲 [this] ,不能按引用捕獲 [&this] 。

[1] ccia(c++併發程式設計實戰)附錄a,a.5 lambda表示式。

[2]

C 教程10 C 判斷

c 判斷 判斷結構要求程式設計師指定乙個或多個要評估或測試的條件,以及條件為真時要執行的語句 必需的 和條件為假時要執行的語句 可選的 下面是大多數程式語言中典型的判斷結構的一般形式 判斷語句 c 提供了以下型別的判斷語句。點選鏈結檢視每個語句的細節。語句描述 if 語句乙個 if 語句 由乙個布林...

10 C 中的新成員

注 部落格中內容主要來自 狄泰軟體學院 部落格僅當私人筆記使用。測試環境 ubuntu 10.10 gcc版本 4.4.5 一 動態記憶體分配 1 c 中的動態記憶體分配 c 中通過new關鍵字進行動態記憶體申請 c 中的動態記憶體申請是基於型別進行的 delete關鍵字用於記憶體釋放 釋放陣列記憶...

10 C 中的物件模型object model

本篇介紹c 中的物件模型中虛指標vptr,虛表vtbl,動態繫結dynamic binding的相關知識點。如果c 類成員中有虛函式,那麼對應的物件中就有除了本身資料外的虛指標vptr 4個位元組 虛指標指向虛表vtbl,虛表中存放虛函式的位址。如下圖所示 注意點 如圖當指標p指向物件c,用p呼叫c...