C++11之lambda表示式
阿新 • • 發佈:2021-10-11
-
什麼是lambda表示式?
答:來我們看看百度怎麼說?Lambda 表示式(lambda expression)是一個匿名函式,Lambda表示式基於數學中的λ演算得名,直接對應於其中的lambda抽象(lambda abstraction),是一個匿名函式,即沒有函式名的函式。Lambda表示式可以表示團包(注意和數學傳統意義上的不同)。lambda是C++11中的一大亮點,但是他也不是隻有C++中有啊,比他更早的Python等高階語言中都有lambda表示式。該表示式的特點就是簡潔,他可以在函式中去定義另外一個匿名函式,並且還可以直接把他給呼叫起來。這就很方便了。使得程式非常的簡潔高效靈活。
- lambda表示式的語法 [capture list](parans list) opt-> return {body;}; capture:捕獲列表 parans:引數列表 opt:函式選項,該部分我們可以省略掉 return:返回值型別,也可省略 body:函式體
-
我們需要把它寫道函式的內部才行,基於該函式原型,寫例項demo如下:
- 捕獲外部變數 捕獲外部變數就是在建構函式的內部,匿名函式的外部完成的;就是捕獲到匿名函式外面的區域性變數並在匿名函式的內部用它。 要想使用捕獲的方法就必須要知道捕獲列表,下面就是捕獲列表:
-
以下所有的程式碼都是在匿名函式的外部定義三個變數
-
以引用的方式捕獲外部資料:
-
以值拷貝的方式捕獲外部資料:
-
帶形參列表的以值拷貝的方式捕獲外部資料:
- 匿名函式的返回值: 匿名函式:[capture list](parans list) opt-> return {body;}; -> return:表示返回值,預設“return"這個地方是不需要我們指定返回值型別的,因為編譯器會自動幫我們推到出來返回值得型別,有一種情況是我們需要去指定返回值的型別的,那就是匿名函式內部使用多次的return後需要指定返回值的型別。