從C++11開(kāi)始,C++也支持使用lambda表達(dá)式(匿名函數(shù))。Lambda表達(dá)式是一種便捷的方式,可以定義一個(gè)函數(shù)對(duì)象,而無(wú)需使用顯式的函數(shù)對(duì)象類(lèi)型或函數(shù)指針語(yǔ)法。
C++中的 lambda表達(dá)式的基本語(yǔ)法如下:
[capture list] (parameter list) -> return type { function body }
其中各個(gè)部分的含義如下:
-
capture list
:用于指定所捕獲的外部變量列表。可以使用以下符號(hào):-
[]
:不捕獲任何外部變量。 -
[&]
:以引用的方式捕獲所有外部變量。 -
[=]
:以值的方式捕獲所有外部變量。 -
[var1, var2, ...]
:指定要捕獲的具體變量,可以使用值捕獲或引用捕獲。例如,[&var1, =var2]
表示對(duì)var1
采用引用方式捕獲,對(duì)var2
采用值捕獲。
-
-
parameter list
:用于指定函數(shù)參數(shù)列表,與普通函數(shù)定義一樣。 -
return type
:用于指定函數(shù)返回值類(lèi)型,可以省略,編譯器會(huì)自動(dòng)推斷返回類(lèi)型。 -
function body
:用于定義函數(shù)的代碼塊。
下面是一個(gè)簡(jiǎn)單的例子,展示了如何使用lambda表達(dá)式計(jì)算兩個(gè)整數(shù)的和:
#include <iostream>
using namespace std;
int main()
{
// 定義一個(gè)lambda表達(dá)式,計(jì)算兩個(gè)整數(shù)的和
auto sum = [](int a, int b) -> int {
return a + b;
};
// 使用lambda表達(dá)式計(jì)算兩個(gè)整數(shù)的和
cout << sum(2, 3) << endl; // 輸出 5
return 0;
}
在這個(gè)例子中,我們使用auto
關(guān)鍵字定義了一個(gè)lambda表達(dá)式,并將其賦值給變量sum
。這個(gè)lambda表達(dá)式接受兩個(gè)整數(shù)參數(shù)a
和b
,返回它們的和。在main()
函數(shù)中,我們使用這個(gè)lambda表達(dá)式計(jì)算了兩個(gè)整數(shù)的和,并輸出結(jié)果。文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-475614.html
需要注意的是,lambda表達(dá)式也可以作為其他函數(shù)的參數(shù),例如std::for_each()
、std::sort()
、std::transform()
等STL算法中的函數(shù)。使用lambda表達(dá)式可以讓代碼更加簡(jiǎn)潔和緊湊。文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-475614.html
到了這里,關(guān)于C++的lambda表達(dá)式(匿名函數(shù))的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!