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;
}


【C++ API】binary_function与unary_function使用详解

/***************************************************************************** * aurhor:    StefanCh...
  • feng1790291543
  • feng1790291543
  • 2017-01-21 12:17:18
  • 780

stl 中 std::binary_function 的使用

stl  中  std::binary_function 的使用         在我们使用stl的 一些算法的时候,比如find_if等,需要使用仿函数,如果仿函数有2个参数,但是算法需要一个一元...
  • tangaowen
  • tangaowen
  • 2012-05-08 19:47:37
  • 9846

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

unary function 一元和二元函数.
  • infoworld
  • infoworld
  • 2014-06-09 16:32:49
  • 5567

binary_function函数用法

转自:http://blog.csdn.net/yzm365487848/article/details/5568496 大多数情况,不需要用到binary_function!  如果你在...
  • mydriverc2
  • mydriverc2
  • 2013-09-11 09:54:50
  • 1712

std::unary_function 和 std::binary_function.

要将书写函数对象的进程简单化, 标准库提供两个类模板作为这样的对象的基类:                 std::unary_function 和 std::binary_function.  ...
  • SzMinglove
  • SzMinglove
  • 2012-11-14 01:01:53
  • 1161

binary_function函数用法

转自:http://blog.csdn.net/mydriverc2/article/details/11554345 大多数情况,不需要用到binary_function!  如果你在定...
  • clelouch
  • clelouch
  • 2018-01-07 18:28:16
  • 49

C++仿函数

仿函数是早期的命名,C++标准规格定案后所采用的新名称是 函数对象(function  objects)。 “函数对象”比较贴切:一种具有函数特质的对象。而“仿函数”指其可以被调用者可以像函数一样地被...
  • GUI1259802368
  • GUI1259802368
  • 2017-05-25 20:57:00
  • 167

STL算法设计理念 - 二元函数,二元谓词以及在set中的应用

demo 二元函数对象 #include #include #include #include using namespace std; template class SumVector...
  • zyq522376829
  • zyq522376829
  • 2015-07-09 19:41:05
  • 1118

STL源码剖析 [算法](三)[stl_function.h]

/* stl_function.h @功能,functor相关 测试效果。 函数对象 函数适配器 环境,win7-vs2013 */ /* NOTE: This is an internal hea...
  • langb2014
  • langb2014
  • 2015-09-14 10:27:11
  • 974

STL中的二元函数binary_function

函数对象是重载了operator()的类的一个实例,operator()是函数调用运算符。 标准C++库根据operator()参数个数加以划分,主要有以下几种类型:        1  发生器:一种...
  • sichuanpb
  • sichuanpb
  • 2017-06-06 11:03:52
  • 252
收藏助手
不良信息举报
您举报文章:STL中的二元函数binary_function
举报原因:
原因补充:

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