08 一元函式物件和一元謂詞

2021-09-10 20:00:21 字數 952 閱讀 8093

#include using namespace std;

#include "string"

#include #include #include "set"

#include #include "functional"

//函式物件 類過載了函式呼叫操作符,這樣的類定義的物件稱為函式物件

template class showelemt

void operator()(t &t)

void printn()

private:

int n;

};//函式模板 ==函式

template void funcshowelemt(t &t)

//普通函式

void funcshowelemt2(int &t)

//函式物件 定義: 函式物件和普通函式的異同

//void main01()

//函式物件是屬於類物件,能突破函式的概念,能保持呼叫狀態

//函式物件的好處

//for_each 演算法中函式物件做函式引數

//for_each 演算法中,函式物件當返回值

void main02()

*/ // 1 for_each演算法的 函式物件的傳遞 是元素值傳遞,不是引用傳遞

for_each(v1.begin(),v1.end(),show1);

show1.printn();

cout << "通過for_each演算法的返回值,看呼叫的次數:" << endl;

show1 = for_each(v1.begin(), v1.end(), show1);

show1.printn();

//結論 要點:分清楚stl演算法返回的值是迭代器 還是 謂詞(函式物件) 是stl演算法入門的重點

}void main()

find if一元謂詞

find if接受一元謂詞,因此傳遞給find if的可呼叫物件必須接受單一引數。舉個例子 vector vec auto wc find if vec.begin vec.end sz const string words 當中的lambda表示式 sz const string words 轉化...

函式物件,一元謂詞,二元謂詞,預定義函式物件

find if sort for each 的使用 for each v1.begin v1.end showelemt 要使用預定義函式物件需要包含 functional 標頭檔案vector iterator it find if v1.begin v1.end myint sort v3.be...

C 一元謂詞和二元謂詞

include include 演算法標頭檔案 include include using namespace std 返回型別為bool型別 的operator struct greatstruct for each需要使用的偽函式 template typename t void printer...