函式物件 函式符

2022-07-29 11:15:07 字數 995 閱讀 6096

函式物件(函式符)

很多stl演算法都使用函式物件,也叫函式符(functor)。函式符是以函式方式與( )結合使用的任意物件,如函式名、指向函式的指標、過載了( )運算子的類物件

函式符概念

1.生成器(generator)是不用引數就可以呼叫的函式符

2.一元函式(unary function)是用乙個引數可以呼叫的函式符

3.二元函式(binary function)是用兩個引數可以呼叫的函式符

4.返回bool值的一元函式是謂詞(predicate)

5.返回bool值的二元函式是二元謂詞(binary predicate)

預定義的函式符

標頭檔案functional(以前為function.h) 定義了多個模板類函式物件。比如+號運算子對應的plus<>() 。  plusadd; 建立乙個plus物件,可接受兩個double引數並返回相加結果

更多符號見圖

自適應函式符

每個函式符概念都有對應的自適應概念,如自適應生成器、自適應一元函式、自適應謂詞等。函式符攜帶了標識引數型別和返回型別的typedef 成員,分別為 result_type、first_argument_type、second_argument_type。例如plus::result_type 是其返回型別int

函式介面卡類

可以將函式的引數轉化,如若使每個引數都加10 可使自適應二元函式plus<>轉換為自適應一元函式,stl 使用binder1st 和binder2nd 類自動完成這一過程。

例. plusfun;

binder1st(fun, 10) fadd;  fadd物件變為自適應一元函式, fadd(a)  等價於 fun(a,10)

bind1st() 函式簡化了binder1st 類的使用,它將返回這種物件, 如bind1st(plus(), 10) 將返回自適應一元函式的物件,即如上fadd物件

binder2nd 類與此類似,它將變數賦給第二個引數,而不是第乙個。有bind2nd 的類似助手函式。

C 函式物件(函式符)

函式物件也叫函式符,函式符是可以以函式方式與 結合使用的任意物件。這包括函式名 指向函式的指標和過載了 運算子的類物件。上面這句話的意思是指 函式名 指向函式的指標和過載了括號運算子的類物件與括號結合,從而以函式方式實現某種功能。該示例摘自 c primer 第六版。include using na...

C 之函式呼叫操作符和函式物件

可以為類型別的物件過載函式呼叫操作符。一般為表示操作的類過載函式呼叫操作符 函式呼叫操作符必須宣告為函式成員。乙個類可以定義函式呼叫操作符的多個版本,由形參的數目或型別加以區別 定義了呼叫操作符的類,其物件常稱為為函式物件 function object 即它們是行為類似函式的物件 eg.struc...

STL 函式物件 謂詞 預定義函式物件 函式介面卡

過載函式呼叫操作符的類,其物件常稱為函式物件 function object 即它們是行為類似函式的物件,也叫仿函式 functor 其實就是過載 操作符,使得類物件可以像函式那樣呼叫。注意 函式物件 仿函式 是乙個類,不是乙個函式。函式物件 仿函式 過載了 操作符使得它可以像函式一樣呼叫。分類 假...