• unary_function和binary_function详解


    1.unary_function和binary_function介绍

    1.1 unary_function介绍

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

    1.2 unary_function源码

    1 template <class Arg, class Result>
    2   struct unary_function {
    3     typedef Arg argument_type;
    4     typedef Result result_type;
    5   };
    成员类型定义注释
    argument_type 第一个模板参数 (Arg) ()重载函数的参数类型
    result_type 第二个模板参数(Result) ()重载函数的返回值类型

    1.3 例子

     1 // unary_function example
     2 #include <iostream>     // std::cout, std::cin
     3 #include <functional>   // std::unary_function
     4 
     5 struct IsOdd : public std::unary_function<int,bool> {
     6   bool operator() (int number) {return (number%2!=0);}
     7 };
     8 
     9 int main () {
    10   IsOdd IsOdd_object;
    11   IsOdd::argument_type input;
    12   IsOdd::result_type result;
    13 
    14   std::cout << "Please enter a number: ";
    15   std::cin >> input;
    16 
    17   result = IsOdd_object (input);
    18 
    19   std::cout << "Number " << input << " is " << (result?"odd":"even") << ".
    ";
    20 
    21   return 0;
    22 }
    View Code

     2. binary_function介绍

    2.1 binary_function介绍

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

    2.2 binary_function源码

    1 template <class Arg1, class Arg2, class Result>
    2   struct binary_function {
    3     typedef Arg1 first_argument_type;
    4     typedef Arg2 second_argument_type;
    5     typedef Result result_type;
    6   };
    成员类型定义注释
    first_argument_type 第一个模板参数(Arg1) ()重载函数的第一个参数类型
    second_argument_type 第一个模板参数 (Arg2) ()重载函数的第二个参数类型
    return_type 第一个模板参数(Result) ()重载函数的返回值类型

    2.3 例子

     1 // binary_function example
     2 #include <iostream>     // std::cout, std::cin
     3 #include <functional>   // std::binary_function
     4 
     5 struct Compare : public std::binary_function<int,int,bool> {
     6   bool operator() (int a, int b) {return (a==b);}
     7 };
     8 
     9 int main () {
    10   Compare Compare_object;
    11   Compare::first_argument_type input1;
    12   Compare::second_argument_type input2;
    13   Compare::result_type result;
    14 
    15   std::cout << "Please enter first number: ";
    16   std::cin >> input1;
    17   std::cout << "Please enter second number: ";
    18   std::cin >> input2;
    19 
    20   result = Compare_object (input1,input2);
    21 
    22   std::cout << "Numbers " << input1 << " and " << input2;
    23   if (result)
    24       std::cout << " are equal.
    ";
    25   else
    26       std::cout << " are not equal.
    ";
    27 
    28   return 0;
    29 }
    View Code
  • 相关阅读:
    self 和 super 关键字
    NSString类
    函数和对象方法的区别
    求两个数是否互质及最大公约数
    TJU Problem 1644 Reverse Text
    TJU Problem 2520 Quicksum
    TJU Problem 2101 Bullseye
    TJU Problem 2548 Celebrity jeopardy
    poj 2586 Y2K Accounting Bug
    poj 2109 Power of Cryptography
  • 原文地址:https://www.cnblogs.com/blueoverflow/p/4738964.html
Copyright © 2020-2023  润新知