**:
大多數情況,不需要用到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...