stl中的仿函数functor的应用

转载 2012年03月21日 19:33:50
 

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

相关文章推荐

STL与泛型编程<十四>:仿函数介绍

简介仿函数(functor)就是定义了operator()的一种型别(或实例化的对象),可以如下使用FunctionObjectType fo; ... fo(...) //并不是使用函数fo(),...
  • MonroeD
  • MonroeD
  • 2016年03月28日 22:24
  • 428

STL仿函数functor

1.仿函数的妙处(P127) 示例: //一般函数 void fo(){ statements } //仿函数 class FunctionObjectType{ public: void...

在STL中的functor(仿函数)的另一用处:当模板函数必须要进行偏特化时

funtor的一个用途:弥补模板函数无法偏特化的不足

【学习笔记】《STL使用入门教程》第四讲:容器set、函数对象functor与对组pair

1、容器set、multiset的使用方法。 2、functor的使用方法。 3、pair的使用方法。

STL中伪函数、函数对象(functor)初步理解(上)

伪函数或者函数对象只是翻译的问题,英文全部都是functor,还有些读物管这个叫函数符。functor作为C++ STL六大基本组件之一被广泛使用(其他五个分别是容器、演算法、迭代器、适配器、分配器)...

STL中伪函数、函数对象(functor)初步理解(下)

好了,有了以上理论知识,就可以探讨一下函数对象的用法了,接下来我会以STL中使用最频繁的for_each做例子,来说明函数对象的原理和作用。 先查一下for_each的用法,在www.c...

C++ 仿函数(functor)

C++ 仿函数(functor) 2007-04-06 10:11   所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。   因此,这里需要明确两点: ...

C++ 仿函数(functor)

from:  http://hi.baidu.com/laodun/item/a8e63f32fd732084c2cf29ce   所谓的仿函数(functor),是通过重载()运算符模拟函数形...

C++ 仿函数(functor)

所谓的仿函数(functor),是通过重载()运算符模拟函数形为的类。   因此,这里需要明确两点:   1 仿函数不是函数,它是个类;   2 仿函数重载了()运算符,使得它的对你可以像函数那...
  • guomei
  • guomei
  • 2011年07月21日 22:03
  • 875

深入理解仿函数(functor或function object)

仿函数(functor),就是使一个类的使用看上去象一个函数。其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了。   有些功能的的代码,会在不同的成员函数中...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:stl中的仿函数functor的应用
举报原因:
原因补充:

(最多只允许输入30个字)