C++ 仿函数

14 篇文章 0 订阅
11 篇文章 0 订阅

引例

在c++里面的sort函数中,用到了一个函数指针来实现数据的自定义比较:

 

但是在c++里面有一个和它功能相同且效率更优的仿函数:

仿函数

仿函数就是仿照函数功能的类,通过使用operator()来模拟函数的实现,拓宽了函数的范围。

这里使用了仿函数进行比较,我们发现使用模板来任意匹配,且在类里面是默认内联的。

但是我们的普通函数传指针和声明内联也是一样的可以:

仿函数的优点

但是我们单个函数就只能实现比较,我们的类还可以在类里面定义相应的成员变量或者其他函数拓宽我们的调用功能,比如说我们要统计调用的次数。我们的单个函数就只能定义全局变量,这样就降低了功能之间的內聚程度。而仿函数可以进行统一的管理和维护。

另外,函数指针确实比较复杂,对于初学者来说函数指针的类型都不是很好理解。

所以在c++中我们用的更多的是仿函数。

库中默认的两个仿函数

分别是std::greater std::less

greater

less

像我们使用sort函数,或者优先级队列等都可以使用这两个仿函数。

举例:

  • 4
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值