關於匿名函式 lambda表示式

2021-09-25 15:11:08 字數 1242 閱讀 5647

一、lambda表示式

iso c++ 11 標準的一大亮點是引入lambda表示式

[capture list] (parameter list)->return type 

注釋:capture list 捕獲列表

可以為空;

[=] 定義在表示式{}外的變數,在表示式{}中為唯讀變數,不能對其進行修改。

[&] 定義在表示式{}外的變數,在表示式{}中為可讀可修改變數。

更加靈活的用法,訪問{}外的變數

[=,&a,&b] 表示{}外部變數 a、b 的值可以被修改,其餘{}外部變數不能被修改;

[&,a,b] 表示除了{}外部變數 a、b 的值不能被修改,其餘{}外部變數可以被修改;

parameter list 匿名函式的引數列表

return type 匿名函式的返回值型別

function body 函式體

列子:

int a[4]

=;int t =

0, x=

10,y=

20,z=30;

sort

(a, a+4,

[=](

int x,

int y)

->

bool);

// 公升序排序

for_each

(a, a+4,

[&](

int x));

cout << t << endl;

auto f =[=

,&y,

&z](

int n)

->

int;

cout <<

f(x)

<< endl;

cout << y << endl;

cout << z << endl;

auto f1 =[&

,y,z]()

; cout <)<< endl;

cout << y << endl;

cout << z << endl;

int(

*fp)

(int)=

(int a)

;//不捕獲時才可轉換為函式指標

cout <<

(*fp)

(100

)<< endl;

4 6 匿名函式 Lambda表示式

4.6 匿名函式 lambda表示式 lambda函式是一種快速定義單行的最小函式,是從lisp借用來的,可以用在任何需要函式的地方。無須定義函式名稱 寫法舉例 g lambda x,y,z.x y lambda 構造的是乙個函式物件 example4.6.1 g lambda x,y x y g ...

C C 匿名函式 Lambda 表示式

基本的lambda函式 我們可以這樣定義乙個lambda函式 include using namespace std int main func now call the function 其中func就是乙個lambda函式。我們使用auto來自動獲取func的型別,這個非常重要。定義好lambd...

Lambda 表示式 即匿名函式

拉姆達值 lambda 希臘字母表示為 指與真空的空間有關的能量或暗能量。代表轉換的常量 或者轉換本身。lambda 表示式 lambda 表示式 是乙個 匿名函式,可以包含表示式和語句,並且可用於建立委託或表示式目錄樹型別。所有 lambda 表示式都使用 lambda 運算子 該運算子讀為 go...