lambda 的[=],[&]方式, 根據lambda的實現知道:
=:方式為傳值,在lambda定義的時候,初始化狀態就確定了
&:方式為引用,那麼引用的物件或者變數,會根據lambda執行的時候,再確定初始化狀態 這一點很重要
我們可以用 typeid(lambda).name() 來看看不同編譯器,對於lambda的型別到底是什麼
lambda 預設是帶有const 屬性的,如果要在函式體內,改變捕捉變數的值,那麼要加上mutable,去掉const屬性
lambda 與 stl:
inline void func(int a)
coutfor(auto iter=vec.begin();iter!=vec.end();++iter)
func(*iter);
for_each(vec.begin(),vec.end(),func);
for_each(vec.begin(),vec.end(),(int val),
,
,
,
,
,
};
for_each(_map.begin(),_map.end(),(autoiter);
auto
iter=find_if(vec.begin(),vec.end(),(int
val));
cout<<*iter<這樣用 find_if ,一眼就知道你要幹什麼。
for_each(vec.begin(),vec.end(),(int
&val));
for_each(vec.begin(),vec.end(),(constintval));
for_each(vec.begin(),vec.end(),(const隨機值初始化容器intval){cout<
lambda更多的時候,是配合stl的經過調優後的演算法使用,可以大大節省開發時間與精力的投入。
但是要把lambda用好,不經過長期的磨練,踩足夠多的坑,也是很難完全掌握的。
C 11 新特性解析與應用》 讀書筆記
cplusplus 其實被定義為乙個整數 c 03 中被定義為199711l c 11 中被定義為201103l 可以通過下面的 檢測編譯器是否支援c 11 if cplusplus 201103l error should use c 11 implementation endif 列舉的作用域即...
C 11新特性學習
lambda表示式用於建立匿名的函式物件,語法為 函式可訪問的的外部變數 函式引數 返回值型別 如 int a 1,b 2 int c b int x int b 表示函式中可以訪問外部變數b,而且引數b是按值傳遞,b 表示引數b是按引用傳遞,表示可以訪問所有外部變數,並且是用按值傳遞方式,類似,也...
C 11 新特性試用
在c 11之前,auto關鍵字用來指定儲存期。在新標準中,它的功能變為型別推斷。auto現在成了乙個型別的佔位符,通知編譯器去根據初始化 推斷所宣告變數的真實型別。各種作用域內宣告變數都可以用到它。例如,名空間中,程式塊中,或是for迴圈的初始化語句中。auto i 42 i is an int a...