假設你設計了乙個位址簿的類。現在你要提供函式查詢這個位址簿,可能根據姓名查詢,可能根據位址查詢,還有可能兩者結合。要是你為這些情況都寫個函式,那麼你一定就跪了。所以你應該提供乙個介面,能方便地讓使用者自定義自己的查詢方式。在這裡可以使用lambda函式來實現這個功能。
[cpp]view plain
copy
#include
#include
class addressbook
} return results;
} private:
std::vector_addresses;
};
從上面**可以看到,findmatchingaddressses函式提供的引數是func型別,這是乙個泛型型別。在使用過程中應該傳入乙個函式,然後分別對位址簿中每乙個entry執行這個函式,如果返回值為真那麼表明這個entry符合使用者的篩選要求,那麼就應該放入結果當中。那麼這個func型別的引數如何傳入呢?
[cpp]view plain
copy
addressbook global_address_book;
vectorfindaddressesfromorgs ()
);
} 可以看到,我們在呼叫函式的時候直接定義了乙個lambda函式。引數型別是
[cpp]view plain
copy
const string& addr
返回值是bool型別。
如果使用者要使用不同的方式查詢的話,只要定義不同的lambda函式就可以了。
Lambada表示式簡介
在我們程式中,經常有這樣一些需求 1.需要乙個臨時方法,這個方法只會使用一次,或者使用的很少。2.這個方法的方法體很短,以至於比方法宣告都短,寫起來實在沒勁 我將其稱之為 一句話方法 匿名委託 匿名方法使我們不需要建立具體的委託方法我們可以直接用匿名來定義委託方法 例如 action string ...
c 學習筆記十八 lambada表示式
c 11 中的 lambda 表示式用於定義並建立匿名的函式物件,以簡化程式設計工作。語法形式 函式物件引數 捕獲 操作符過載函式引數 mutable 或 exception 宣告 返回值型別1.函式物件引數 捕獲 內容含義 空沒有任何函式物件引數。函式體內可以使用 lambda 所在範圍內所有可見...
C lambda表示式末尾 的作用
includeusing namespace std int main auto u int a,int b cout 等價於 includeusing namespace std int main auto u int a,int b cout 細節 1.第二種方式必須帶返回值,否則會 error...