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()的重载

阅读更多
个人分类: C/C++/STL
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

不良信息举报

stl中的仿函数functor的应用

最多只允许输入30个字

加入CSDN,享受更精准的内容推荐,与500万程序员共同成长!
关闭
关闭