关闭

unary_function跟binary_function详解

202人阅读 评论(0) 收藏 举报
分类:

转自:http://www.myexception.cn/cpp/1994728.html

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") << ".\n";
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.\n";
25   else
26       std::cout << " are not equal.\n";
27 
28   return 0;
29 }

0
0

查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场
    个人资料
    • 访问:61466次
    • 积分:1007
    • 等级:
    • 排名:千里之外
    • 原创:12篇
    • 转载:187篇
    • 译文:1篇
    • 评论:8条
    最新评论