C 的使用小教程3 Lambda函式與表示式

2021-09-27 02:17:17 字數 2107 閱讀 8412

lambda表示式可以用於簡潔的表達乙個函式,雖然不太會用,但是之後看**的時候可能會遇見,還是學習一下為妙。

c++11提供了對匿名函式的支援,匿名函式被稱為 lambda 函式,也可以被稱作lambda表示式。

具體的形式如下:

[capture]

(parameters)

mutable

->

return

-type

其中存在四個引數,分別是:

1、[capture] :capture是捕捉列表。捕捉列表是lambda表示式的開頭。

2、(parameters):parameters是引數列表。和c++中的普通函式引數意義一樣。

3、mutable:當我們在引數列表後面註明了「mutable」關鍵字之後,可以取消其const常量的性質。

4、->return-type:return-type是函式的返回值型別。和c/c++中的普通函式返回值型別的性質一樣。當不需要返回值時,可以去掉這一部分。

5、 :statement是函式體。是函式的具體執行過程。

#include

using

namespace std;

intmain()

; cout <<

sum(a,b)

<<

'\n'

;system

("pause");

return0;

}

結果為:

20

請按任意鍵繼續.

..

捕捉列表可以填入不同的值。

1、填入 = 時,代表通過值傳遞捕捉父作用域的變數

#include

using

namespace std;

intmain()

;//值傳遞捕捉父作用域變數

cout <<

fun1()

<<

'\n'

;system

("pause");

return0;

}

輸出為:

20

請按任意鍵繼續.

..

2、填入 & 時,代表通過引用傳遞捕捉父作用域的變數

#include

using

namespace std;

intmain()

;fun2(5

); cout <<

"a = "

<< a <<

" b = "

<< b << endl;

system

("pause");

return0;

}

結果為:

a =

5 b =

15請按任意鍵繼續.

..

3、填入[ = , &b ]時,代表除去b外,其他值以值傳遞的方式捕捉

以值傳遞捕捉的變數,在函式體裡如果要修改,要加mutaple,因為預設使用const修飾。

在本例中,a變數以值傳遞的方式捕捉,需要加上mutable才可以修改,否則會報錯。

#include

using

namespace std;

intmain()

;//以值傳遞捕捉的變數,在函式體裡如果要修改,要加mutaple,因為預設const修飾

fun3(3

);cout <<

"a = "

<< a <<

" b = "

<< b << endl;

system

("pause");

return0;

}

結果為:

a =

10 b =

15請按任意鍵繼續.

..

cpp教程10 C 中的lambda

看完c 中的lamda,感覺總體來說,不愧是 c 乙個lamda 都搞的可以玩出花來!下面我簡單介紹一下lamda表示式在 c 中的語法。作為乙個從 python 來的 c 人,我被c 的lamda 震驚了。以開頭,lambda 語法可以生成乙個臨時的或者說匿名的函式物件,因此可以方便的支援函式式程...

C 的使用小教程8 多型與介面

學習好幸苦。c 多型意味著呼叫成員函式時,會根據呼叫函式的物件的型別來執行不同的函式。介面描述了類的行為和功能,而不需要完成類的特定實現。通過多型與介面的配合,可以使得c 中同乙個函式在派生類與基類中實現方式不同,假設我們有乙個名為shape的類,circle和rectangle都是它的派生類,ci...

C 的使用小教程2 基於範圍的for迴圈

在學習了python之後,一直覺得python的語法很方便,特別是python中遍歷陣列的方式,無需配置特別的引數就可以完全遍歷,c語言是很難實現的,不過我發現c 中有對應的函式可以實現。c 中正常的for迴圈演算法如下所示 for init condition increment 其中init用於...