STL源码剖析笔记五--仿函数

说实话,我现在真不知道仿函数存在的必要性,因为函数指针完全可以代替它。

仿函数又称为函数对象,也就是说它起着函数的作用,但它是一个对象。

 

class ISPOSITIVE

{

 public:

    bool operator()(int x){return x > 0 ? true : false;} 

};

 

 

std::cout << ISPOSITIVE()(-5) << std::endl;

ISPOSITIVE()(-5)  首先是创建了一个临时无名对象ISPOSITIVE(),然后调用仿函数的operator()方法

 

ISPOSITIVE obj;

std::cout<< obj(-5) <<std::endl;

这种方式是:先创建一个ISPOSITIVEE对象,然后调用方法

 

当然了,基本上没有人这么使用仿函数,仿函数一般与算法、容器结合在一起使用,比如算法for_each()。

STL为了让仿函数融入与算法及容器中,定义了两个模板类型 binary_func unary_func,STL提供的任何一个

仿函数已经用户希望自定义的仿函数都需要从这两个模板类型派生(当然,你也可以不用从之继承,自然了就不能

使用其他的STL元素了)

 

STL提供了诸如equal little greate等仿函数,用于最简单的操作。

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值