C++标准库分析总结(十)——<仿函数/函数对象>
创始人
2024-02-20 15:02:29
0

目录

1.functor仿函数简介   

2 仿函数的分类

3 仿函数使用

4 仿函数可适配的条件






1.functor仿函数简介   

  • 仿函数STL中最简单的部分存在的本质就是为STL算法部分服务的,一般不单独使用。
  • 仿函数(functors)又称为函数对象(function objects),虽然函数指针虽然也可以作为算法的参数,但是函数指针不能满足STL对抽象性的要求,且无法和STL其他组件搭配
  • 仿函数就是使一个类的使用看上去像一个函数,其实现就是类中实现一个operator(),这个类就有了类似函数的行为,就是一个仿函数类了,本质就是类重载了一个operator(),创建一个行为类似函数的对象
  • 对于重载了()操作符的类,可以实现类似函数调用的过程,所以叫做仿函数,实际上仿函数对象仅仅占用1字节,因为内部没有数据成员,仅仅是一个重载的方法而已。
  • 实际上可以通过传递函数指针实现仿函数类似的功能,但是为了和STL内部配合使用,他提供了仿函数的特性

2 仿函数的分类

标准库目前提供了约有24个仿函数,分为算数类、逻辑运算类、相对关系类。

3 仿函数使用

下图中myclass是我们自己写的仿函数,但是由于没有继承仿函数的公共父类,所以就不能融入到STL中。

4 仿函数可适配的条件

如果我们要自己写仿函数,并且融入到STL中, 就必须继承两个中的一个父类两个操作符的父类或者一个操作符的父类),只有继承了才能被适配器去修饰和改造。

相关内容

热门资讯

律师成长的误区:忽视“被动”生... 我们小时候都学过“揠苗助长”的故事,学完会嘲笑这个农夫太过心急。我发现我们也不知不觉成为了这个“农夫...
中国电器科学研究院股份有限公司... 本公司董事会及全体董事保证本公告内容不存在任何虚假记载、误导性陈述或者重大遗漏,并对其内容的真实性、...
特朗普:拟于今日或明日起诉BB... 当地时间12月15日,美国总统特朗普表示,可能会在当日下午或16日早上对英国广播公司(BBC)提起诉...
欧盟外交与安全政策高级代表卡拉... 欧盟外交与安全政策高级代表卡拉斯:每个人都理解比利时的担忧,并愿意分担负担。 来源:金融界AI电报
美联储理事米兰:金融市场关注的... 美联储理事米兰:金融市场关注的是结果,而非政策制定者的动机。 来源:金融界AI电报
欧盟外交与安全政策高级代表卡拉... 欧盟外交与安全政策高级代表卡拉斯:尚未讨论解除对俄罗斯的制裁。 来源:金融界AI电报
欧洲名人访|中国制度型开放举措... 12月4日, 塞尔维亚国际政治经济研究所副所长伊沃娜·拉杰瓦茨在首都贝尔格莱德接受新华社记者专访。 ...
甘肃省委常委会决定12月22日... 甘肃省委常委会12月12日召开(扩大)会议,决定12月22日在兰州召开省委十四届九次全会。主要议程是...
原创 十... 由于美国有分级制度,很多剧集都很黄很暴力,尺度大到难以想象,让很多国内看惯了偶像剧和主旋律剧集的观众...
杭州小米交付中心发生车祸,小米... 12月15日,有网传消息称,浙江杭州小米下沙交付中心发生事故,一名第一天提车的小米YU7车主撞倒了销...