C lambda表示式複習

2021-06-29 16:39:22 字數 1245 閱讀 6915

#include

#include

#include

#include

using namespace std;

int main()

;//lambda表示式也就是乙個函式,我們可以把它賦給函式指標,也可以在後面加上括號使用。

////裡面可以新增一些限制lambda塊語句中使用外部變數的限制符。一共有四種情況:

//1.空白表示不能對外部變數進行讀寫。

//2.=表示可以對外部變數進行讀訪問。

//3.&表示可以對外部變數進行讀寫訪問。

//4.可以同時填寫&變數名或不加&的變數名,加了&的變數可以進行讀寫,不加&的變數只能進行讀訪問。

////()裡面是函式的引數。

////{}裡面是函式的表示式。

//例一:將lambda表示式賦予函式指標

void(*p)(int);

p = (int num);

p(1);

//例二:將lambda表示式用作函式

(int num);

(int num)(1);

//例三:對外部變數進行訪問

int temp1 = 10, temp2 = 20;

//auto tempa = [=]();//此時只能對temp1和temp2進行讀訪問。

//tempa();

//auto tempb = [&]();//此時可以對temp1和temp2進行讀寫訪問,注意:此時讀寫的變數為原本變數。

//tempb();

//auto tempc = [&temp1, temp2]();//此時可以對temp1進行讀寫訪問,但是只能對temp2進行讀訪問。

//tempc();

//auto tempd = [=]()mutable;//此時可以對temp1和temp2進行讀寫訪問,但是temp1和temp2是原來變數的副本。

/*lambda表示式可以允許在函式內再次定義函式(匿名函式),lambda表示式對資料結構的遍歷格外好用。

*///例四:用lambda表示式對陣列進行訪問

int arr1[5] = ;

for_each(arr1, arr1 + 5, (int num));

arrayarr2 = ;

for_each(arr2.begin(), arr2.end(), (int num));

cin.get();

return 0;

}

lambda表示式 C Lambda表示式

lambda宣告 lambda introducer。在內部,你可以指明乙個capture用來處理外部作用域內未被傳遞為實參的資料。意味著外部作用域以by value的方式傳遞給lambda。在lamdba中不能改變其值 為什麼?意味著外部作用域以by reference的方式傳遞給lambda。因...

c Lambda表示式簡介

c 11標準的lambda引入的主要目的是 能夠將類似於函式的表示式用作接受函式指標或函式符的函式引數,因此,典型的lambda表示式是測試表示式或者比較表示式,可編寫為一條語句,這使得lambda簡潔而易於理解。1 乙個lambda表示式有如下型別 capture list parameter l...

C Lambda表示式用法

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