在前面介紹了function object是stl演算法的主要使用方式。如果能將現有的函式指標,函式,成員函式等等都封裝成function object,就可以獲得stl演算法的支援,而且可以減少專門編寫function object的工作量。基本思路仍然是構造乙個function object,內部能夠轉調函式指標。
bool foo(int x) typedef bool (*foo_pointer)(int x); templateclass pointer_bind return_type operator()(arg_type param) private: pointer_type p_; }; int main(int argc, char** argv) { foo_pointer p = foo; cout<<(*p)(3)寫到這裡,主角登場。boost提供了一系列bind函式,可以將函式指標,成員函式,函式物件,虛函式,函式引用都封裝在乙個臨時function object內。並且能夠支援多達9個引數,同時還能智慧型的分析出返回型別。
int main(int argc, char** argv) { foo_pointer p = foo; vectorv; v.push_back(1); v.push_back(2); vector::iterator itor = std::find_if(v.begin(),v.end(),boost::bind(p,_1)); cout<<*itor function object首先是乙個類,它實現了函式呼叫操作符t operator t t可以是void型別。class a void operator int x cout x 0通過檢視for each的源 可以觀察到stl中使用function object的基本特徵。下面是gcc4.6.... function object首先是乙個類,它實現了函式呼叫操作符t operator t t可以是void型別。class a void operator int x cout x 0通過檢視for each的源 可以觀察到stl中使用function object的基本特徵。下面是gcc4.6.... boost提供了從 1到 9的佔位符。具體定義如下 boost arg 1 1 boost arg 2 2 boost arg 3 3 boost arg 4 4 boost arg 5 5 boost arg 6 6 boost arg 7 7 boost arg 8 8 boost arg 9 ...function object研究之一
function object研究之一
function object研究之五