上篇已經介紹了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 當可呼叫物件只能接受乙個引數,但是需要兩個或者多個引數才能...