學習C lambda表示式(二)

2021-10-02 17:37:00 字數 1464 閱讀 2513

上篇已經介紹了lambda的基本概念、一元函式對應的lambda以及一元謂詞對應的lambda表示式;這篇將繼續介紹lambda表示式的其它應用。

上篇中建立了乙個一元謂詞,當整數能被2整除時返回true。現在如果要改變指定的除數,可通過lambda表示式的捕獲列表。

int divisor=3;//除數

auto ielement = find_if(begin, end, [divisor](int dividend));

引數([…])被稱為lambda表示式的捕獲列表。

lambda表示式總是以[ ]開頭,並可以接受多個引數,為此可在捕獲列表([ ])中指定這些引數狀態,並用逗號隔開。

[var1, var2](type& param)

lambda表示式還可以接受多個輸入引數,為此可用逗號分隔它們:

[s1, s2](type1& var1, type2& var2)

如果要向編譯器明確地指定返回型別,可使用->,如下所示:

[s1, s2](type1& var1, type2& var2)->returntype

二元函式接受兩個引數,還可返回乙個值。定義如下:

[…](type1& param1name, type2& param2name)

下面演示將lambda表示式用作二元函式,以便將兩個容器中的元素相乘,並將結果儲存到第三個容器中。

#include

#include

#include

using

namespace std;

intmain()

);cout<<

"the result of the multiplication is: "

0;indexsize()

;++index)

cout<<<

' ';

cout

}

二元謂詞是:返回bool型,幫助決策的二元函式。二元謂詞可用於std::sort()等排序演算法中。與二元謂詞等價的lambda表示式的通用語法是:

[…](type1& param1name, type2& param2name)

下面將演示如何將lambda表示式用於姓名按字母進行排序:

#include

#include

#include

#include

using

namespace std;

template

<

typename t>

void

displaycontents

(const t& input)

intmain()

);displaycontents

(vecnames)

;return0;

}

c lambda表示式學習

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

學習C lambda表示式(一)

前言 lambda是c 11新增的,因此對你的編譯器是有要求的。比如你用的是visual studio,那麼版本要求是vs2011之後的。lambda是一種定義匿名函式物件的簡潔方式,可以接受引數 儲存狀態 返回值以及跨越多行。lambda表示式可提高c 程式設計速度和效率,推薦讀者盡可能使用它們。...

C lambda表示式 學習筆記

auto f void fcn1 v1 0 auto j f j 42 void fcn2 v1 0 auto j f j 0 void fcn3 v1 0 auto j f j 43 void fcn4 v1 0 auto j f j 1 當可呼叫物件只能接受乙個引數,但是需要兩個或者多個引數才能...