學習筆記 Lambda表示式

2021-09-27 08:26:42 字數 1138 閱讀 6433

lambda表示式是c++11中的乙個新特性。如果乙個函式物件只需要呼叫一次,還要專門為其編寫乙個類嗎?如果乙個簡單函式只需要呼叫一次,能否在呼叫時才寫出函式體呢?

必須可以,這就是lambda所解決的問題。它可以使程式顯得更加簡潔,更加精神。

基本形式:

[外部變數訪問方式說明符]

(引數)

->返回值型別(可以不寫,編譯器自動判斷)

所需實現的語句組;

[=]   //以傳值的形式使用所有外部變數

[ ]    //不使用任何外部變數

[&]  //以引用形式使用所有外部變數

[x,&y]  //其中x以傳值形式使用,y以引用形式使用

[=,&x,&y] //其中x,y以引用形式使用,其餘變數以傳值形式使用

[&,x,y] //其中x,y以傳值的形式使用,其餘變數以引用形式使用

直接看例子:

int main()

(1.5, 2.5) << endl;

auto ff = [=, &y, &z](int n);

cout << ff(15) << endl;

cout << y << "," << z << endl;

}

輸出結果:

4100

225201,301

對於上面的例子,需要說明的是,第乙個lambda表示式其中(1.5,2.5)語句並不是lambda的一部分,是呼叫lambda表示式所需的引數;第二個lambda表示式直到cout《下面我們來看乙個真正能體現lambda表示式存在感的**

int main()

; int total = 0;

for_each(a.begin(), a.end(), [&](int &x));

cout << total << endl;

for_each(a.begin(), a.end(), (int x));

return 0;

}

[&](int &x)是以引用的方式去使用外部變數,且引數(int &x)是引用的形式,意味著該x代表a裡面的元素,之後表示式語句中修改了x的值,vector中的值也會被修改

lambda表示式(學習筆記)

函式介面概念 有且僅有乙個抽象方法的介面。用乙個固定的格式寫在public inte ce之前一行即可 functionalinte ce lambda表示式要想使用,一定要有函式式介面的推斷環境。lambda的格式就是為了將抽象方法,翻譯成以下三點。1.一些引數 方法引數 2.乙個箭頭 3.一些 ...

lambda表示式 lambda表示式

1.概述 c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。lambda 的語法形式如下 函式物件引數 操作符過載函式引數 mutable 或 exception 宣告 返回值型別可以看到,lambda 主要分為五個部分 函式物件引數 操作符過載函式引數 muta...

筆記 Lambda 表示式

lambda表示式是c 中的語法糖。一般lambda表示式形如 capture parameters return type 如果沒有引數,空的 可以省略。返回值也可以省略。舉例 std sort x,y,float a,float b 這是乙個匿名的lambda表示式,若想引用lambda表示式,...