binary function函式用法

2021-08-14 10:01:19 字數 1643 閱讀 5913

**:

大多數情況,不需要用到binary_function! 

如果你在定義乙個二元的functor時,幾乎可以不用管這個binary_function。但是如果你使用一些function adapter的時候就需要了,這其實是在實現一種concept. 

比如,定義乙個functor,用來給乙個vector push_back乙個值

c/c++ code

struct

inserter }; inserter f; vector

<

dobule

>

vd; f(

1.0, vd);

現在,如果有乙個演算法,會往容器裡追加一些值。例如這樣的

c/c++ code

template

<

typename functor

>

void

double

x; while

(cin

>>

x) f(x); }

c/c++ code

template

<

typename functor

>

struct

inserter_adapter  

void

operator

()(double

x) functor f_; vector

<

double

>&

v_; };

那麼在使用的時候就是下面這樣。

c/c++ code

inserter f; vector

<

dobule

>

--------------------------------------- 

其實使用stl,你完全不用再寫乙個inserter_adapter,stl中有乙個std::binder2nd的function adapter,作用和inserter_adapter一樣,是把第二個引數繫結,讓二元的函式物件變成一元的,就能符合只需要乙個引數的演算法。

但是前面定義的inserter這個函式物件不能直接用在std::binder2nd上,它還不符合std::binder2nd的concept。繼承一下binary_function就搞定了。

c/c++ code

struct

inserter :

public

std::binary_function

<

double

, vector

<

double

>&

, void

>

//分別是第乙個引數,第二個引數,返回值型別

}; inserter f; vector

<

dobule

>

//bind2nd幫你建立了乙個binder2nd物件

其實符合了binder2nd的concept,就意味著binder2nd知道了你的inserter需要什麼樣的引數型別,這樣就可以幫你傳遞引數到你的inserter裡面去了。

binary function函式用法

大多數情況,不需要用到binary function!如果你在定義乙個二元的functor時,幾乎可以不用管這個binary function。但是如果你使用一些function adapter的時候就需要了,這其實是在實現一種concept.比如,定義乙個functor,用來給乙個vector p...

WaitForSingleObject函式的使用

程式舉例 1 建立對話方塊應用程式,專案名稱為mytestthread 2 新增按鈕,命名為啟動和停止,在對話方塊中增加編輯框,id為idc time,3 增加成員變數,handle m hthread 2 此為執行緒的控制代碼 4 定義全域性變數,用來控制線程的執行與否 volatile bool...

cvCreateVideoWriter函式使用

cvcreatevideowriter函式使用 2011 11 04 15 47 例如,cv fourcc p i m 1 是mpeg 1 codec,cv fourcc m j p g 是motion jpeg codec cv fourcc m p 4 2 mpeg 4.2 codec cv f...