unary_function跟binary_function详解

转载 2015年11月20日 15:37:16

转自: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 }

标准模板库介绍(一元及二元函数对象Unary and Binary Function Objects)

第24章 标准模板库介绍 Chapter 24 Introducing the Standard Template Library 这一章介绍标准模板库-许多人认为这是最近几年被添加到C++的最重...
  • scut1135
  • scut1135
  • 2011年12月16日 15:56
  • 1497

[C/C++标准库]_[初级]_[unary_function 和 binary_function]

unary function 一元和二元函数.
  • infoworld
  • infoworld
  • 2014年06月09日 16:32
  • 5298

STL中的二元函数binary_function

函数对象是重载了operator()的类的一个实例,operator()是函数调用运算符。 标准C++库根据operator()参数个数加以划分,主要有以下几种类型:        1  发生器:一种...
  • sichuanpb
  • sichuanpb
  • 2017年06月06日 11:03
  • 196

从binary_function类继承的作用

转自:http://tangfeng.iteye.com/blog/788298 大多数情况,不需要用到binary_function!如果你在定义一个二元的functor时,几乎可以不用管这个bi...
  • flin115
  • flin115
  • 2011年12月20日 10:12
  • 127

母函数(Generating function)详解

  • 2010年08月02日 15:22
  • 322KB
  • 下载

母函数(Generating function)详解

  • 2010年08月02日 15:19
  • 321KB
  • 下载

SASS详解之函数(function)

SASS和其他语言脚本有类似之处。可以利用变量来构建自己的函数,这也是SASS迷人之处之一,原来写CSS还可以像写JavaScript那样拥有自己的逻辑。...
  • LiMengXiaoLong
  • LiMengXiaoLong
  • 2013年10月29日 08:47
  • 5743

C++ - 通过私有(private)继承复用类实现工厂函数(factory function) 详解

通过私有(private)继承复用类实现工厂函数(factory function) 详解 版权归C.L.Wang所有, 禁止转载, 如有需要, 请站内联系. 本文地址: http://blo...
  • u012515223
  • u012515223
  • 2014年04月15日 12:26
  • 2224

[乐意黎转载]jQuery中$(function() {});问题详解

$(function() {});是$(document).ready(function(){ })的简写,最早接触的时候也说$(document).ready(function(){ })这个函数是...
  • aerchi
  • aerchi
  • 2017年03月27日 10:19
  • 474

【第6篇】TypeScript函数function的案例代码详解

TypeScript函数function的案例代码详解
  • jilongliang
  • jilongliang
  • 2015年08月08日 09:35
  • 3773
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:unary_function跟binary_function详解
举报原因:
原因补充:

(最多只允许输入30个字)