C 新特性 lambda表示式與匿名函式

2021-10-20 12:07:59 字數 981 閱讀 2262

//c++新特性 lambda表示式與匿名函式

/* lambda是c++11最重要的特性之一,實際上就是提供了乙個類似匿名函式的特性,而匿名函式則是乙個函式,但是

又不想費力去命名乙個函式的情況下使用的。這樣的常見其實很多,所以匿名函式幾乎是現代程式語言的標配

[捕獲列表] (引數列表) mutable(可選) 異常屬性(throw) -> 返回值型別

[caputrue] (params) opt ->ret

在最適合lambda表示式的場景,如果你一定要用class表達,那麼你需要為你的類定義乙個十分臃腫的建構函式,傳進去一大堆引數,然後返回乙個值就把這個物件扔了。然而用lambda表示式的話,你只要把這些捕獲為閉包就行了

*/int foo(int a)

int main()

(1, 2);

//函式傳遞匿名函式

foo((int a,int b) ->int

(1,2)

); //將匿名函式儲存到f

auto f=(int a, int b) ->int

; c = f(1, 2);

//兩個lambda表示式 ,內聯巢狀,函式程式設計

int c = (int n)

(1);

}(2);

//不直接使用

auto f01 = (int n)

; };

int c = f01(1)(2);

int t = 10;

//按值捕獲物件

[t]()

; t = 11;

//按引用捕獲

[&t]()

; //可以修改值

//捕獲所有變數的值,表示安值捕獲

[=]()

; //捕獲所有變數的值,表示安引用捕獲

[&]()

; while (true)

return 0;

}

c 11 新特性 lambda表示式

iso c 11 標準的一大亮點是引入lambda表示式。基本語法如下 capture list parameter list return type 其中除了 其中捕獲列表可以為空 和 復合語句 相當於具名函式定義的函式體 其它都是可選的。它的型別是唯一的具有成員operator 的非聯合的類型別...

C 11新特性 lambda表示式

為何要寫一篇博文呢?其實,系統學了c 一定會學到lambda表示式。不巧不巧,在秋招的浪潮中,我又被問到了關於lambda表示式,回過頭想一想,其實lambda表示式在c 中應用挺廣泛的。匿名函式,短小精悍,應該就是它的feature。好記性不如爛筆頭,書上有路勤為徑。可呼叫物件 對於任何乙個物件或...

C 11新特性 lambda表示式

在c 11以後,形如這樣的語法。capture parameters mutable return type 稱為乙個lambda表示式,表達乙個匿名函式。從程式設計的角度上看,lambda是一種函式式程式設計。分析語法 1.capture,可以通過值傳遞或者引用傳遞的方式給匿名函式提供訪問父作用域...