過載函式呼叫操作符的類,其物件常稱為函式物件(function object),即它們是行為類似函式的物件,也叫仿函式(functor),其實就是過載「()」操作符,使得類物件可以像函式那樣呼叫。
假定某個類有乙個過載的operator(),而且過載的operator()要求獲取乙個引數,我們就將這個類稱為「一元仿函式」(unary functor);相反,如果過載的operator()要求獲取兩個引數,就將這個類稱為「二元仿函式」(binary functor)。
stl內建了一些函式物件。分為:算數類函式物件,關係運算類函式物件,邏輯運算類仿函式。這些仿函式所產生的物件,用法和一般函式完全相同,當然我們還可以產生無名的臨時物件來履行函式功能。使用內建函式物件,需要引入標頭檔案#include。
api意義
算術類templatet plus
加法仿函式
templatet minus
減法仿函式
templatet multiplies
乘法仿函式
templatet divides
除法仿函式
templatet modulus
取模仿函式
templatet negate
取反仿函式
關係運算類
templatebool equal_to
等於templatebool not_equal_to
不等於templatebool greater
大於templatebool greater_equal
大於等於
templatebool less
小於templatebool less_equal
小於等於
邏輯運算類
template boollogical_and
邏輯與template boollogical_or
邏輯或template boollogical_not
邏輯非
1 #include23using
namespace
std;45
class myprint
11int count = 0;12
};13
14void
test01()
2425
//函式物件作為引數
26void doprint(myprint print,int
num)
2930
void
test02()
3637
intmain()
1#define _crt_secure_no_warnings
2 #include3
using
namespace
std;4//
內建函式物件標頭檔案
5 #include 6 #include 7 #include 8
9void
test01()
1022
23//
templatebool greater
//大於
2425
void
test02()
26);38}
3940
intmain()
STL之函式物件
目錄 為了使類屬演算法具有靈活性,stl常使用函式的過載機制為演算法提供兩種形式。演算法的第一種形式使用的是常規的操作來實現。第二種形式中,演算法可以根據使用者指定的準測對元素經行處理。函式物件包含了乙個可以通過函式呼叫運算子 使用的函式。實際上,函式物件是過載了函式呼叫運算子operator 的類...
STL之函式物件事例
for each transform bind1st 函式的使用。知識點 如果stl函式需要乙個一元函式,而現有乙個能完成相應工作的自適應二元函式,則 可以使用bind1st 或bind2nd使該二元函式適用於一元介面。程式輸出 gr8 36 39 42 45 48 m8 25 27 29 31 3...
STL函式物件之自定義函式物件
如何定義自己的函式物件,它使用於任何的繫結器 要定義自己的繫結器要滿足一定的條件 必須提供引數和返回值的型別。stl為我們提供了兩個結構體 template struct unary function template struct binary function 乙個例子 template str...