zoukankan      html  css  js  c++  java
  • 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
  • 相关阅读:
    [转载]SELinux 环境下网络服务设置,配置 Apache 、Samba、NFS
    [转载]SELinux安全系统基础
    Linux NFS服务器的安装与配置
    将可执行程序设为linux服务启动
    不关闭selinux下配置php+httpd访问KingbaseES
    [转载]SELinux安全系统基础
    解决samba和SELINUX 冲突
    [转载]在线文本编辑器的基本实现原理
    [转载]使用postgresql安装wordpress
    [转载]php连接postgreSQL数据库及其操作(php5,postgreSQL9)
  • 原文地址:https://www.cnblogs.com/blueoverflow/p/4738964.html
Copyright © 2011-2022 走看看