C++ binary_function与unary_function使用详解

一、unary_function的介绍

unary_function可以作为一个一元函数对象基类,它只定义参数返回值的类型,本身并不重载()操作符,这个任务应该交由派生类去完成。

源码

     template <class Arg, class Result> struct unary_function;
        
     template <class Arg, class Result>      // 1个参数,一个返回值
       struct unary_function {
          typedef Arg argument_type;
          typedef Result result_type;
     };

 

二、使用实例

// unary_function example
#include <iostream>     // std::cout, std::cin
#include <functional>   // std::unary_function

struct IsOdd : public std::unary_function<int,bool> {
  bool operator() (int number) {return (number%2!=0);}
};

int main () {
  IsOdd IsOdd_object;
  IsOdd::argument_type input;
  IsOdd::result_type result;

  std::cout << "Please enter a number: ";
  std::cin >> input;

  result = IsOdd_object (input);

  std::cout << "Number " << input << " is " << (result?"odd":"even") << ".\n";

  return 0;
}

三、binary_function介绍

binary_function可以作为一个二元函数对象基类,它只定义参数返回值的类型,本身并不重载()操作符,这个任务应该交由派生类去完成。

源码

     template <class Arg1, class Arg2, class Result> struct binary_function;
              
     template <class Arg1, class Arg2, class Result>
        struct binary_function {
               typedef Arg1 first_argument_type;
               typedef Arg2 second_argument_type;
               typedef Result result_type;
       };

四、使用实例

 #include <iostream>     // std::cout, std::cin
 #include <functional>   // std::binary_function          

struct TCompareNumSize : public std::binary_function<int,int, int>{

    int operator() (int num1, int num2)
    {

        return num1 < num2 ? num2 : num1;
    }

};
          int main(){
                   TCompareNumSize oCompareSize;
                   int iMaxNum = oCompareSize(1,2);
                   std::cout<<" 最大数是:"<<iMaxNum<<endl;
                   return 0;
          }

参考:

https://www.cnblogs.com/blueoverflow/p/4738964.html

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值