哪位帮我解释一下function object和functin object adapter的意思

zxy_zs 2002-11-10 08:24:25
在STL里,使用function object和function oebject adapter的作用是什么。这两个又是什么意思。用途是什么!谢谢!
...全文
73 7 打赏 收藏 转发到动态 举报
写回复
用AI写文章
7 条回复
切换为时间正序
请发表友善的回复…
发表回复
zxy_zs 2002-11-10
  • 打赏
  • 举报
回复
能否举个例子?如不加function object时是什么情况。加了又是什么情况。谢谢!
wangran 2002-11-10
  • 打赏
  • 举报
回复
function object就是将function call操作符重载的一种class,而任何算法接受一个仿函数时,总是在其演算过程中调用该仿函数的operator(),这使得不具备仿函数之形却有真函数之实的一般函数和成员函数感到为难.为此,STL又提供了为数众多的配接器,使一般函数和成员函数得以无缝隙的与其它配接器或算法结合起来.
zxy_zs 2002-11-10
  • 打赏
  • 举报
回复
谢谢各位~~~
zhuoshenme 2002-11-10
  • 打赏
  • 举报
回复
所谓仿函数,function object,另名functor,是一个定义了operator()的对象,例如:
FunctionObjectType fo;
...
fo(...);
其中表达式fo()是调用仿函数fo的operator()。你可以将仿函数看成一般的函数。仿函数有三大好处:
1。仿函数拥有自己的状态。你可以同时拥有多个状态不同的实体。
2。仿函数可以写为class template,从而指定某种行为模式。
3。执行速度上,仿函数通常比函数指针更快。

所谓“函数配接器”function adaptor,是指能够将仿函数和另外一个仿函数或函数结合起来的仿函数。
例如:
find_if(coll.begin(),coll.begin(), bind2nd(greater<int>(),42));
其中的表达式 bind2(greater<int>(),42)就是一个组合型仿函数,检查某个int值是否大于42。实际上bind2nd是将一个二元仿函数转化为一元仿函数。
zxy_zs 2002-11-10
  • 打赏
  • 举报
回复
那就是说。使用function object是为了在函数里实现其它一些函数的功能?是吧?
北极猩猩 2002-11-10
  • 打赏
  • 举报
回复
function object(又叫做functor)是一种重载了()运算符的类,它在STL中被用来代替以前的函数指针。它的类型安全、可支持参数化类型、而且可以使用Adapter来进行配接。
function object adapter将functor的功能进行相互的配接来时向某些复杂的函数功能,比如:
less是实现比较的functor比如你需要比较一个属是否小于5,则可以这样使用:
bind2nd(less<int>(), 5)
sttony 2002-11-10
  • 打赏
  • 举报
回复
function object 对象和指向函数的指针查不多。函数根据传递进来的不同参数有不同的行为。不用function object就要用函数指针,只是函数对象跟安全。

24,854

社区成员

发帖
与我相关
我的任务
社区描述
C/C++ 工具平台和程序库
社区管理员
  • 工具平台和程序库社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧