STL約束器

STL約束器屬於某種函式對象,通過將一個參數約束到某個值,使我們可以將兩個參數的函式對象當做一個參數的函式對象來使用。

簡介,補充,

簡介

本身屬於適配器,依賴於STL函式對象基類:unary_function,binary_function.
STL約束器:這種通過約束一個參數而形成的組合是很常見,很有用的,也是很少令人生厭的,標準庫專門提供了一個專門的標準類來支持做到這一點。
template<class BinOp>
class binder2nd
:public unary_function<typename BinOp::first_argument_type,
typename BinOp::result_type>{
protected:
BinOp op;
typename BinOp::second_argument_type arg2;
public:
binder2nd(const BinOp&x,const typenmae BinOp::second_argument_type&v)
:op(x),arg2(v){}
result_type operator()(const argument_type&x )const {return op(x,arg2);}
};
template<class BinOp,class T> binder2nd<BinOp>bind2nd(const BinOp&op,const T&v)
{
return binder2nd<BinOp>(op,v);
}

補充

以上的binder2nd本身也是要當做一個一元謂詞來使用的。它在 將一個擁有兩個參數的函式對象B 約束其中一個參數的過程中起到一個橋樑作用。在起這個作用的過程中,它的兩個參數作為輸入,其中一個輸入提供實際需要用到得 含有兩個參數的函式對象B,另外一個參數為 這個B提供那個受控的參數值。
而罪惡的一切 都由result_type operator()(const argument_type&x )const {return op(x,arg2);}
這句來完成的。最終將完成將 含兩個參數的函式對象B當做含一個參數的函式對象使用。

相關詞條

熱門詞條

聯絡我們