STL中的二元函数binary_function

原创 2017年06月06日 11:03:52

      

       函数对象是重载了operator()的类的一个实例,operator()是函数调用运算符。

标准C++库根据operator()参数个数加以划分,主要有以下几种类型:

       1  发生器:一种没有参数且返回一个任意类型值的函数对象,例如随机数发生器。

       2  一元函数:一种只有一个任意类型的参数,且返回一个可能不同类型值的函数对象。

       3  二元函数:一种有两个任意类型的参数,且返回一个可能不同类型值的函数对象。

       4  一元判定函数:返回bool型值的一元函数。

       5  二元判定函数:返回bool型值的二元函数。


     样例

     //1   一个自定义类型

     

#include <string>
#include <iostream>
using namespace std;

class Student
{
public:
	Student(void);
	~Student(void);

public:
	string _stuName;
	float  _stuScore;

public:
	Student(string stuName,float stuScore)
	{
		_stuName=stuName;
		_stuScore=stuScore;
	}

	//布尔运算符重载
	bool operator <(const Student& stu)
	{
		return _stuScore<stu._stuScore;
	}

	//()运算符重载
	void operator()(const Student& stu)
	{
		cout<<stu._stuName<<"  "<<stu._stuScore<<endl;
	}


};
 

//2  重载系统二元函数

#pragma once
#include <functional>
using namespace std;


//不能有构造函数
template <class inPara , class outPara>
class binary_sort:public binary_function<inPara,outPara,bool>
{
public:
	bool operator()(inPara in1,outPara in2)
	{
		return in1<in2;
	}
};

//3  使用样例

 

#include "stdafx.h"

#include <string>
#include <vector>
#include <iostream>
#include <functional>
#include <algorithm>

#include "Student.h"
#include "binary_sort.h"


int _tmain(int argc, _TCHAR* argv[])
{

	vector<Student>v;

	//向量赋值
	Student s1("11111",67);
	v.push_back(s1);

	Student s2("2222",45);
	v.push_back(s2);

	Student s3("33333",78);
	v.push_back(s3);

   //利用函数对象,输出各个元素
   cout<<"before sort()"<<endl;
   for_each(v.begin(),v.end(),Student());


   cout<<"after sort()"<<endl;
   //利用二元判定函数进行排序
   sort(v.begin(),v.end(),binary_sort<Student&,Student&>());

   for_each(v.begin(),v.end(),Student());


	getchar();
	return 0;
}


版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

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

第24章 标准模板库介绍 Chapter 24 Introducing the Standard Template Library 这一章介绍标准模板库-许多人认为这是最近几年被添加到C++的最重...

3) 一元/二元函数抽象function [原创,泛型编程,自由下载转载,需注明出处]

function/function object是运行时调用的基础,在模板中,最常用的函数是一元函数及二元函数。 通常一元函数R (*)(TP)是遍历的组件,如果R是bool类型或者进行二次封装(把R...

函数对象(Function Objects-STL)

简介(Introduction)         每个使用c++标准模板库(STL)的人都会碰到一些叫做函数对象的奇怪的东西。尽管他们与其他的普通的c++对象一样,但是他们通常与标准模板库(STL)...

STL之sort(),binary_search(),lower_bound(),upper_bound()函数

这次内容要讲到的是四个函数的使用,这些函数起到的是排序与查找的作用,这四个函数分别是sort(),binary_search(),lower_bound(),upper_bound().他们都是用在数...

STL源码——function adapter函数适配器/函数配接器

function adapters是指能够将function objects(函数对象)与另一个function objects、某个值、某个一般函数结合起来的function objects。通过...

从binary_function类继承的作用

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

MATLAB绘制二元函数的图形

  • 2014-09-07 09:52
  • 666KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

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