C++ Primer 5th笔记(chap 14 重载运算和类型转换)标准库函数对象
生活随笔
收集整理的這篇文章主要介紹了
C++ Primer 5th笔记(chap 14 重载运算和类型转换)标准库函数对象
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
1. 定義
標(biāo)準(zhǔn)庫(kù)定義的函數(shù)對(duì)象(Library-Defined Function Objects):標(biāo)準(zhǔn)庫(kù)在頭文件functional中定義了一組表示算術(shù)運(yùn)算符、關(guān)系運(yùn)算符和邏輯運(yùn)算符的類(lèi),每個(gè)類(lèi)分別定義了一個(gè)執(zhí)行命名操作的調(diào)用運(yùn)算符。
這些類(lèi)都被定義為模板的形式,可以為其指定具體的應(yīng)用類(lèi)型(即調(diào)用運(yùn)算符的形參類(lèi)型)。
eg.
輸出結(jié)果為
b1 a31 30 02. 標(biāo)準(zhǔn)庫(kù)函數(shù)對(duì)象列表:
| plus | equal_to | logical_and |
| minus | not_equal_to | logical_or |
| multiplies | greater | logical_not |
| divides | greater_equal | |
| modulus | less | |
| negate | less_equal |
3. 可以比較指針
eg.
//lambda表達(dá)式是比較兩個(gè)字符串大小string a1 = "b1";string b1 = "a1";vector<string*> nameTable = {&a1 , &b1}; // vector of pointerssort(nameTable.begin(), nameTable.end(), [](string* a, string* b) { return *a < *b; });for_each(nameTable.begin(), nameTable.end(), [](string* s){std::cout << *s << endl; }); //標(biāo)準(zhǔn)庫(kù)比較兩個(gè)指針的內(nèi)存地址, vector<string*> nameTable2 = { &a1 , &b1 }; // vector of pointers sort(nameTable2.begin(), nameTable2.end(), less<string*>());for_each(nameTable2.begin(), nameTable2.end(), [](string* s){std::cout << *s << endl; });輸出:
a1 b1 b1 a1【引用】
[1] 代碼functionObject.h
總結(jié)
以上是生活随笔為你收集整理的C++ Primer 5th笔记(chap 14 重载运算和类型转换)标准库函数对象的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: C++ Primer 5th笔记(cha
- 下一篇: s3c2440移植MQTT