内建函数对象

内建函数对象意义

STL内建了一些函数对象
分类:
        算术仿函数
        关系仿函数
        逻辑仿函数
用法:
        这些仿函数所产生的对象,用法和一般函数完全相同
        使用内建函数对象,需要引入头文件#include

算术仿函数

功能描述:
        实现四则运算
        其中negate是一元运算,其他都是二元运算
仿函数原型:
template T plus//加法仿函数
template T minus//减法仿函数
template T multiplies//乘法仿函数
emplate T divides//除法仿函数t
template T modulus//取模仿函数
template T negate//取反仿函数

示例

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include

using namespace std;

void test01()
{
    negaten;

	cout << n(50) << endl;//-50
}

void test02()
{
	plusp;
	
	cout << p(10,20)<< endl;//30
}

int main()
{
	test01();
	test02();

    return 0;
}

关系仿函数

功能描述:
        实现关系对比
仿函数原型:
        template bool equal to//等于
        template bool not equal to//不等于
        template bool greater//大于
        template bool greater equal//大于等于
        template bool less//小于
        template bool less-equal//小于等于

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include

using namespace std;
 
class mycom
{
public:
	int operator()(int v1,int v2)
	{
		return v1 > v2;
	}
};
 
void test01()
{
	vectorv;
	v.push_back(10);
	v.push_back(20);
	v.push_back(30);
	v.push_back(40);
	v.push_back(50);	
	for(vector::iterator it = v.begin();it!=v.end();it++)
	{
		cout << *it;
	}
	cout << endl;
	//sort(v.begin(),v.end(),mycom());
	sort(v.begin(),v.end(),greater());//编译器提供的函数对象
	for(vector::iterator it = v.begin();it!=v.end();it++)
	{
		cout << *it;
	}
	
}

int main()
{
	test01();

    return 0;
}

逻辑仿函数

功能描述:
        实现逻辑运算
函数原型:
        template bool logical and//逻辑与
        template bool logical or   //逻辑或
        template bool logical not//逻辑非

#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include 
#include

using namespace std;
 
class mycom
{
public:
	int operator()(int v1,int v2)
	{
		return v1 > v2;
	}
};
 
void test01()
{
	vectorv;
	v.push_back(true);
	v.push_back(false);
	v.push_back(true);
	v.push_back(false);

	for(vector::iterator it = v.begin();it!=v.end();it++)
	{
		cout << *it << " ";
	}
	cout << endl;          //1 0 1 0 
	//利用逻辑非 将容器v 搬运到容器v2
	vectorv2;
	v2.resize(v.size());

	transform(v.begin(),v.end(),v2.begin(),logical_not());//搬运

	for(vector::iterator it = v2.begin();it!=v2.end();it++)
	{
		cout << *it << " ";
	}
	cout << endl;          //0 1 0 1 

	
}

int main()
{
	test01();

    return 0;
}

你可能感兴趣的:(c/c++,算法,c++)