函式物件的函式介面卡

2021-04-01 16:23:30 字數 918 閱讀 1880

函式物件的函式介面卡

標準庫還提供了一組函式介面卡用來特殊化或者擴充套件一元和二元函式物件介面卡是

一種特殊的類它被分成下面兩類

1 繫結器binder binder 通過把二元函式物件的乙個實參繫結到乙個特殊的值上

將其轉換成一元函式物件例如為了計數乙個容器中小於或等於10 的元素的個數我們可

能會向count_if()傳遞乙個less_equal 函式物件以及乙個被繫結為10 的實參在下一節中

我們將了解怎樣實現這種方法

2 取反器negator negator 是乙個將函式物件的值翻轉的函式介面卡例如為了

計數乙個容器中所有大於10 的元素的個數我們可以向count_if()傳遞less_equal 函式物件的

negator 該函式物件有乙個實參被繫結為10 當然在這種情況下直接傳遞greater 物件

的binder 並把乙個實參繫結為10 更為簡潔明瞭

c++標準庫提供了兩種預定義的binder 介面卡bind1st 和bind2nd 正如你所預料的

bind1st 把值繫結到二元函式物件的第乙個實參上bind2nd 把值繫結在第二個實參上例如

為了計數容器中所有小於或等於10 的元素的個數我們可以這樣向count_if()傳遞

count_if( vec.begin(), vec.end(),

bind2nd( less_equal(), 10 ));

標準庫提供了兩個預定義的negator 介面卡not1 和not2 同樣正如你所料想的not1

翻轉一元預定義函式物件的真值而not2 翻轉二元謂詞函式的真值為了取反less_equal 函

數物件的繫結我們可以這樣寫

count_if( vec.begin(), vec.end(),

not1( bind2nd( less_equal(), 10 )));

函式物件介面卡

include include include include include include include using namespace std 函式物件介面卡bind1st,bind2nd struct myprint public binary function binary functi...

函式物件和函式介面卡

用到以下演算法 templatetype accumulate inputiterator first,inputiterator last,type val,binaryfunction binaryop include include 包含數值演算法標頭檔案 using namespace st...

函式物件及介面卡

定義了呼叫操作符的類,其物件常稱作函式物件 function object 即它們的行為表現出類似於函式的行為。函式物件通常用作泛型演算法的實參,如標準庫中大量泛型演算法有需要函式物件的版本。函式物件使用起來可以比函式靈活。標準庫在標頭檔案標頭檔案中定義了一組算術 關係與邏輯函式物件類,還定義了一組...