关闭

stl中的仿函数functor的应用

601人阅读 评论(0) 收藏 举报
 

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

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:355234次
    • 积分:4353
    • 等级:
    • 排名:第7157名
    • 原创:89篇
    • 转载:134篇
    • 译文:0篇
    • 评论:9条
    博客专栏
    最新评论