20分鐘入門 Lambda表示式(C )

2021-10-09 22:27:55 字數 1919 閱讀 2167

本文章只提供快速入門教程,旨在幫助新手們(包括我自己)快速入門乙個相關知識,不包含詳細的知識點以及高階的技術用法。如有需要,可自行查詢更加詳細的資料。

lambda表示式定義了乙個匿名函式,可以用來替代普通函式。

作者認為lambda表示式只適用於簡單、短小的函式,如果函式邏輯比較複雜,最好還是定義乙個函式來實現功能比較好,否則會影響程式的可讀性。

[ capture ]

( params ) opt -

> ret

;

其中capture捕獲列表params輸入引數列表opt函式選項ret返回值型別body函式體

詳細可以看參考鏈結2:微軟c++語言參考

這裡我們有乙個普通寫法的函式:

std::string func_1

(int a)

它的lambda表示式為:

(

int a)

-> std::string

#include

#include

std::string func_1

(int a)

;int

main

(int argc,

char

* ar**)

; std::cout <<

"普通函式輸入的是: "

<<

func_1(2

)<< std::endl;

std::cout <<

"lambda輸入的是: "

<<

func_2(2

)<< std::endl;

return exit_success;

}std::string func_1

(int a)

其輸出結果為:

普通函式輸入的是: 2

lambda輸入的是: 2

捕獲列表的型別:

寫法含義

不捕獲任何變數

[&]按引用捕獲所有變數

[=]按值捕獲所有變數

[=, &a]

按引用捕獲變數a,然後按值捕獲其他變數

[b]只按值捕獲變數b,不再捕獲其他變數

int a =

0, b =1;

auto f1 =

;// error,沒有捕獲外部變數

auto f2 =[&

];// ok,捕獲所有外部變數,並對a執行自加運算

auto f3 =[=

];// ok,捕獲所有外部變數,並返回a

auto f4 =[=

];// error,a是以複製方式捕獲的,無法修改

auto f5 =

[a];

// error,沒有捕獲變數b

auto f6 =

[a,&b]

;// ok,捕獲a和b的引用,並對b做自加運算

auto f7 =[=

,&b]

;// ok,捕獲所有外部變數和b的引用,並對b做自加運算

c語言中文網:

微軟c++語言參考:

3分鐘理解Lambda表示式

原文 3分鐘理解lambda表示式 1.什麼是lambda表示式 lambda表示式是乙個匿名方法,通常在linq中被用來建立委託 簡單來說。它是乙個沒有宣告,沒有訪問修飾符,沒有返回值。甚至沒有名字的方法。2.為什麼我們需要使用lambda表示式?或者說為什麼我們要寫乙個沒有名字的函式?為了方便,...

正規表示式30分鐘入門筆記

1 b是正規表示式規定的乙個元字元,代表著單詞的開頭或結尾,也就是單詞的分界處。如果要精確地查詢hi這個單詞的話,我們應該使用 bhi b 2 是另乙個元字元,匹配除了換行符以外的任意字元 3 同樣是元字元,它代表的不是字元,也不是位置,而是數量 它指定 前邊的內容可以連續重複使用任意次以使整個表示...

lambda表示式入門

使用lambda表示式的條件 必須是函式式介面 什麼是函式式介面?簡單來說,就是乙個有且僅有乙個抽象方法,但是可以有多個非抽象方法的介面。inte ce animal 通過 方式一步一步推導出lambda表示式如何簡化來的 public class demo01 public static void...