函数对象

 函数对象分类

  1. 发生器:一种没有参数且返回一个任意类型值的函数对象,例如随机数发生器。
  2. 一元函数:一种只有一个任意类型的参数,且返回一个可能不同类型数值的函数对象。
  3. 二元函数:一种有两个任意类型的参数,且返回一个任意类型值的函数对象。
  4. 一元判定函数:返回bool型值的一元函数。
  5. 二元判定函数:返回bool型值的二元函数。

利用函数对象求向量各元素之和

 

 

对上述代码,需要注意:

  1. 必须重载operator()。
  2. 函数对象调用方式。直接采用构造函数形式调用,如本例而言for_each(v.begin(), v.end(), nSum())中的第三个参数nSum(),也就是说,对本例而言,STL知道nSum()对应着nSum类中重载的operator()函数,具体有几个参数呢?由于for_each函数一次只能迭代出一个整型数,因此STL知道每迭代一次整型数都要执行一次nSum中的operator(int)函数。
  3. nSum result用来接收for_each迭代函数对象的最终结果。

一元函数

    

          STL中一元函数基类是一个模板类,原型如下

 

利用一元函数求向量之和

 

 

二元函数

 

           STL中二元函数基类shiite一个模板类,原型如下。

 

              

 

 

 

 

                它有三个模板参数,Arg1, Arg2是输入参数,Result是返回类型,且这三个参数的类型是任意的,因此它的动态特性非常强。

 

               利用二元函数使学生成绩升序排列:

 

              

 

 

              

              

               

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值