C 11 中的 Lambda 表示式的使用

2022-04-01 01:39:52 字數 962 閱讀 5379

lambda在c#中使用得非常頻繁,並且可以使**變得簡潔,優雅.

在c++11 中也加入了 lambda. 它是這個樣子的 () {}...  是的三種括號開會的節奏~ 的作用是表示lambda的開始.並且告訴編譯器.在這個表示式中要用哪種方式去訪問同一作用域中的其它變數

[=] : 表達以值傳遞的方式呼叫

[&] : 表示以引用的方式呼叫

[a,b,&c] : 表示a,b為值傳, c為引用傳遞

[=,&a] : 表示除了a為引用傳,其它都為值傳

[&,a,b] : 表示為了a,b 為值傳,其它都為引用傳遞

[this] : 表示將類的this 指標傳入了, 這樣你就可以使用類的屬性及方法在 lambda中.

() : 就是函式的引數列表

{} : 函式的主體

如果你的函式主體只有一句話的時候,lambda會自動推斷返回的型別,如果函式主的內容多的話,並且需要有返回值的情況的時候,你就需要手動的指定lambda返回的型別:

()->int {} : 這是手動指定返回 int 型別.

如果你想寫乙個函式,並且用乙個lambda表示式作為引數的話,你需要 #include 標頭檔案,這裡包括了模板函式的定義 相當於c# 中的 action,func 等~ 它的使用是這樣的:

std::functionfunc :  這個是定義了乙個 傳入兩個 int 引數,並返回int型別的函式

std::functionfunc : 表達的函式是沒有傳入引數,並且也沒有返回值的型別的函式

1 #include 2 #include //

相當於 c# action , func

3using

namespace

std;45

void myfunc(int val,functionfunc) 89

intmain() );

11return0;

12 }

c 11中的lambda表示式

介紹lambda表示式的文章有很多,這裡不是講怎麼用,而是講為什麼要用。想象乙個場景 最常見的操作就是要遍歷乙個容器 陣列 vector list 然後對每個元素進行特定操作。for auto iter array.begin iter array.end iter 程式猿都是懶惰的,每次都要敲乙個...

C 11中的Lambda表示式

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

C 11 中的 Lambda 表示式

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