1. unary_function

1.1 unary_function介绍

unary_funciton可以作为一个一元函数对象(又叫仿函数)的基类,它只定义了参数和返回值的类型本身并不重载()操作符,这个任务交给派生类去完成

1.2 unary_function源码

//TEMPLATE STRUCT unary_function
template<class _Arg, class _Result>
struct unary_function
{   //base class for unary functionstypedef _Arg argument_type;typedef _Result result_type;
};
成员类型 定义 注释
argument_type 第一个模板参数(Arg) ()重载函数的参数类型
result_type 第二个模板参数(Result) ()重载函数的返回值类型

1.3 unary_function例子

//unary_function example
#include <iostream>     // std::cout, std::cin
#include <functional>   // std::unary_function//判断输入数据是否为Odd奇数?偶数是Even
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;
}

2. binary_function

2.1 binary_function介绍

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

2.2 binary_function源码

//TEMPLATE STRUCT binary_function
template<class _Arg1,class _Arg2,class _Result>
struct binary_function
{   //base class for binary functionstypedef _Arg1 first_argument_type;typedef _Arg2 second_argument_type;typedef _Result result_type;
};
成员类型 定义 注释
first_argument_type 第一个模板参数(First_Arg) ()重载函数的第一个参数类型
second_argument_type 第二个模板参数(Second_Arg) ()重载函数的第二个参数类型
result_type 第三个模板参数(Result) ()重载函数的返回值类型

2.3 binary_function例子

//binary_function example
#include <iostream>     // std::cout, std::cin
#include <functional>   // std::binary_function//比较两个数的大小
struct Compare : public std::binary_function<int,int,bool> {bool operator() (int a, int b) {return (a==b);}
};int main () {Compare Compare_object;Compare::first_argument_type input1;Compare::second_argument_type input2;Compare::result_type result;std::cout << "Please enter first number: ";std::cin >> input1;std::cout << "Please enter second number: ";std::cin >> input2;result = Compare_object (input1,input2);std::cout << "Numbers " << input1 << " and " << input2;if (result){std::cout << " are equal.\n";} else{std::cout << " are not equal.\n";}return 0;
}

unary_function和binary_function详解相关推荐

  1. STL中map和string, vector 用法详解

    1. map 用法详解 std map是STL的一个关联容器,它提供一对一(其中第一个可以称为关键字,每个关键字只能在map中出现一次,第二个可能称为该关键字的值)的数据处理能力,由于这个特性,它完成 ...

  2. lower_bound和upper_bound详解

    lower_bound和upper_bound详解 两函数作用 可以对有序连续的空间进行二分查找. lower_bound默认查找大于等于某值所在连续空间的位置. upper_bound默认查找大于某 ...

  3. iOS runtime 底层详解、内部原理、场景应用

    前言学:位域和共用体 一:isa指针--runtime之前的学习 1.1:苹果应用的按位或.按位与 二:类对象信息 2.1:类对象信息:rw_t 2.2:类对象信息:方法缓存(很关键) 2.2:类对象 ...

  4. for_each使用方法详解

    Abstract 之前在(原創) 如何使用for_each() algorithm? (C/C++) (STL) 曾經討論過for_each(),不過當時功力尚淺,只談到了皮毛而已,這次看了effec ...

  5. 从命令行到IDE,版本管理工具Git详解(远程仓库创建+命令行讲解+IDEA集成使用)

    首先,Git已经并不只是GitHub,而是所有基于Git的平台,只要在你的电脑上面下载了Git,你就可以通过Git去管理"基于Git的平台"上的代码,常用的平台有GitHub.Gi ...

  6. JVM年轻代,老年代,永久代详解​​​​​​​

    秉承不重复造轮子的原则,查看印象笔记分享连接↓↓↓↓ 传送门:JVM年轻代,老年代,永久代详解 速读摘要 最近被问到了这个问题,解释的不是很清晰,有一些概念略微模糊,在此进行整理和记录,分享给大家.在 ...

  7. docker常用命令详解

    docker常用命令详解 本文只记录docker命令在大部分情境下的使用,如果想了解每一个选项的细节,请参考官方文档,这里只作为自己以后的备忘记录下来. 根据自己的理解,总的来说分为以下几种: Doc ...

  8. 通俗易懂word2vec详解词嵌入-深度学习

    https://blog.csdn.net/just_so_so_fnc/article/details/103304995 skip-gram 原理没看完 https://blog.csdn.net ...

  9. 深度学习优化函数详解(5)-- Nesterov accelerated gradient (NAG) 优化算法

    深度学习优化函数详解系列目录 深度学习优化函数详解(0)– 线性回归问题 深度学习优化函数详解(1)– Gradient Descent 梯度下降法 深度学习优化函数详解(2)– SGD 随机梯度下降 ...

最新文章

  1. java open_java-OpenIMAJ Jar文件
  2. python中带星号的参数,带有一个星号 2个星号
  3. Spring Cloud构建微服务架构:分布式服务跟踪(收集原理)【Dalston版】
  4. hbase delete.deleteColumns问题
  5. 向上取整的方法_瓷砖测量的方法有哪些?瓷砖尺寸一般是多少?
  6. 浏览器左上角的网站图标
  7. java io字符输出流_Java字符输入输出流
  8. mysql 命令 kill_MySQL之死锁检测
  9. opencv如何把一个矩阵不同列分离开_学习OPEN_CV
  10. Spring-IOC
  11. 如何修改MySQL已有表的字符集
  12. mysql练习----SUM and COUNT/zh图(二)
  13. [20141124]sql server密码过期,通过SSMS修改策略报错
  14. DNF装备强化的算法分析与实现
  15. java毕业设计成品基于SSM+Bootstrap+MYSQL演唱会网上订票系统
  16. SUBMAIL群发邮件API接口-Mail/send
  17. java楼宇报警器,楼宇智能防盗报警系统毕业设计论文.doc
  18. 数字后端基本概念介绍Blockage Link
  19. 【本人秃顶程序员】Java面试题集(意思意思)
  20. 数据源大盘点 | 你们要的数据源都在这儿了84个!(保持更新,建议收藏)

热门文章

  1. Antlr4入门(安装、配置、简单实例)
  2. 第一章:antlr4 简介
  3. 2021年度高工金球奖投票正式开启
  4. 自学数据库-MySQL
  5. mpaas如何实现视频播放
  6. Win10,你被强化了,快去送
  7. 思科路由交换学习笔记 - CCNP CCIE.安全DMVPN
  8. dns服务器被修改隐藏,路由器的DNS无故被修改成58.53.128.78的解决办法
  9. 2017年全球大数据产业报告之海外篇(第七集)
  10. 写代码后的学习与总结