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

C++仿函数(functor)

摘要: c++仿函数(functor)概念及应用 什么是仿函数(functor)     functor的英文解释为something that performs a function,即...
  • yansmile1
  • yansmile1
  • 2017年02月28日 16:38
  • 480

C++仿函数(functor)

什么是仿函数(functor)     functor的英文解释为something that performs a function,即其行为类似函数的东西。C++中的仿函数是通过在类中重...
  • u012468214
  • u012468214
  • 2014年07月26日 17:25
  • 983

浅谈:函数指针、仿函数和函数适配…

一,仿函数是什么 前几天写了篇博客——浅谈函数指针,主要讲我对函数指针的理解和应用经验。今天,翻看了《C++Primer Plus》第16章“函数对象”这一节,发现C++中还有比函数指针更高层次的抽象...
  • Sagittarius_Warrior
  • Sagittarius_Warrior
  • 2015年11月25日 09:43
  • 478

STL学习_仿函数篇

STL学习_仿函数篇 简介仿函数,实质是函数对象,是一种具有函数特质的对象。对调用者,它可以像函数一样地被调用;对被调用者,它可以以对象所定义的function call operator扮演函数的实...
  • yzhang6_10
  • yzhang6_10
  • 2016年05月02日 17:58
  • 2028

STL源码学习——仿函数和配接器

仿函数 仿函数又称函数对象,它本质上是 一种具有函数特质的对象,它 重载了operator()运算符,我们可以像使用函数一样使用该对象。 比如: template class T> stru...
  • jiange_zh
  • jiange_zh
  • 2016年03月06日 13:44
  • 1731

STL中的仿函数

仿函数是行为类似函数的类或结构体,类或结构体重载了operator(),它比函数指针更加灵活易用。...
  • KangRoger
  • KangRoger
  • 2014年08月19日 14:37
  • 4403

STL之仿函数排序(1)

在逐步深入对STL库的研究过程中,接触到很多参数是函数指针形式。例如在for_each,sort等算法中,对内置类型可以直接使用。当我们想要以自己的方式去实现时,又改如何去做呢?   首先,来看看其...
  • u013184159
  • u013184159
  • 2016年04月23日 13:41
  • 294

浅析STL 谓词 + 仿函数 + 函数指针(c)

一:起因 (0)提到C++ STL,首先被人想到的是它的三大组件:Containers(容器), Iterators(迭代器), Algorithms(算法)。容器为用户提供了常用的数据结构(如,ve...
  • u010700335
  • u010700335
  • 2015年01月30日 20:57
  • 2257

[C/C++标准库]_[初级]_[函数对象functor的使用]

Functor 场景: 1. functor其实就是
  • infoworld
  • infoworld
  • 2014年04月19日 15:07
  • 1806

【函数式】Monads模式初探——Functor

函子与范畴函子(functor)是从一个范畴到另一个范畴的转换,并且其亦可转换/保持态射(morphism)。 一个态射是从一个范畴里的一个值到同一个范畴里的另一个值的变换。在猫的范畴的例子里,一个...
  • JasonDing1354
  • JasonDing1354
  • 2016年02月29日 21:33
  • 1358
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:stl中的仿函数functor的应用
举报原因:
原因补充:

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