lamda表示式的應用

2021-10-20 02:47:05 字數 1683 閱讀 1277

匿名函式

c++在c11標準中引入了匿名函式,即沒有名字的臨時函式,又稱之為lambda表示式.lambda表示式 實質上是建立乙個匿名函式/物件

基本格式

[caputrue]

(params)opt-

>ret

;[函式物件引數]

(操作符過載函式引數)

mutable 或 exception 宣告 -

> 返回值型別

比如說(

);對於匿名函式,一般用於傳函式引數,當然也可以直接定義呼叫.

auto pfun=()

//這裡使用auto自動判斷型別 其實是函式指標

pfun()

;//呼叫這個函式12

或者直接在這裡呼叫就行 最後的那個(

)表示呼叫函式,如果有實參可以放進來.

匿名函式呼叫

各個部分說明

函式物件引數(不可省略)

不擷取任何變數

[&] 擷取外部作用域中所有變數,並作為引用在函式體中使用

[=] 擷取外部作用域中所有變數,並拷貝乙份在函式體中使用

[=,&foo] 擷取外部作用域中所有變數,並拷貝乙份在函式體中使用,但是對foo變數使用引用

[bar] 擷取bar變數並且拷貝乙份在函式體重使用,同時不擷取其他變數

[this

] 擷取當前類中的this指標。如果已經使用了&或者=就預設新增此選項。

過載引數列表

呼叫的時候需要傳遞的引數(引數可以預設) 下面呼叫的時候括號裡面的3會賦值給形參x,y用預設值2.

帶引數的匿名函式

返回型別(可以自動推導 可以省略)

auto fun =

(int x,

int y)

->

int;

對於這裡的-

>

int 這個int就是返回值型別,如果有返回值型別需要在前面加上-

>

直接省略寫成這種格式也可以(

int x,

int y)

函式體lambda表示式的函式體中可以和普通函式一樣寫,可以使用捕獲的引數,寫這個函式實現的具體步驟.

函式選項opt (可以省略)

可以填mutable

,exception,attribute

mutable 表示函式體可以修改捕獲變數的,同時可以訪問捕獲物件的非常屬性成員函式

exception說明lambda表示式是否丟擲異常以及何種異常

attribute用來宣告屬性

補充說明:

按值捕獲的時候,得到的是當前的值,如果想得到實時的值,建議使用引用

#include

using

namespace std;

intmain()

;//lambda表示式

ptr();

//呼叫函式

auto fun =

(int x,

int y)

->

int;

//帶引數的lambda表示式

// 這裡的->後面寫的是返回值型別

auto z=

fun(3,

4); cout << z << endl;

cin.

get();

return0;

}

LAMDA表示式學習

1.普通繫結 public void button1 click object sender,eventargs e this.button1.click button1 click 2.匿名委託 this.button1.click delegate object sender,eventargs...

lamda表示式學習

lamda表示式 格式 形參列表 作用 簡化匿名方法的書寫,可用在任何可使用匿名方法和強型別 的地方 例子 using system using system.collections.generic using system.linq using system.text namespace lamd...

python的lamda表示式

學習python時看到了這個函式 對裡面的lamda表示式產生了疑問。經過一番查詢,對lamda表示式理解如下 lamda看似是表示式,其實是乙個函式,冒號前是傳入的引數,冒號後是表示式,return將返回它的值。可以用來代替乙個簡單的函式,減少 篇幅 例1 def sum x,y return x...