stlにおける擬似関数functorの応用



stlの汎用アルゴリズムではfunctorの応用が多い.
template <typename T>  
struct plus  
{  
    T operator ()(const T& x, const T& y) { return x + y; }  
};  
template <typename T>  
struct minus  
{  
   T operator ()(const T& x, const T& y) { return x - y; }  
};  

void test()  
{  
    plus<int> plusObj;  
    minus<int> minusObj;  
    cout << plusObj(32, 45) << endl;  
    cout << minusObj(32, 45) << endl;  
    cout << plus<int>()(32, 45) << endl;  
    cout << minus<int>()(32, 45) << endl;  
} 


汎用アルゴリズムでは,多くのalgorithmでは匿名オブジェクトのライフサイクルがアルゴリズムにあり,アルゴリズムが出た後に匿名オブジェクトが破棄されるため,後の「匿名オブジェクト」が多く適用される.
例:
inner_product(iv.begin(), iv.end(), iv.begin(), 10, minus<int>(), plus<int>()) 
adjacent_difference(iv.begin(), iv.end(), oite, plus<int>()); 

渡されるのはfunctorの匿名オブジェクトです.
functor、はっきり言ってoperator()への重荷