STL之函式物件

2022-08-02 07:09:13 字數 1771 閱讀 2531

過載函式呼叫操作符的類,其物件常稱為函式物件(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 #include2

3using

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...