93.STL-系统内置仿函数

       

目录

 算术仿函数

关系仿函数 

逻辑仿函数 


        C++ 标准库中提供了一些内置的函数对象,也称为仿函数,它们通常位于 头文件中。以下是一些常见的系统内置仿函数:

 算术仿函数

功能描述:

  • 实现四则运算
  • 其中negate是一元运算,其他都是二元运算

仿函数原型:

  • template T plus //加法仿函数
  • template T minus //减法仿函数
  • template T multiplies //乘法仿函数
  • template T divides //除法仿函数
  • template T modulus //取模仿函数
  • template T negate //取反仿函数
#include 
#include 

using namespace std;

int main() {
	plus m;//加法仿函数
	cout << m(10,20) << endl;

	minus m1;//减法仿函数
	cout << m1(20, 10) << endl;

	multiplies m2;//乘法仿函数
	cout << m2(20, 10) << endl;

	divides m3;//除法仿函数
	cout << m3(20, 10) << endl;

	modulus m4;//取模仿函数
	cout << m4(20, 8) << endl;

	negate m5;//取反仿函数
	cout << m5(20) << endl;

	return 0;
}

 93.STL-系统内置仿函数_第1张图片

关系仿函数 

功能描述:

  • 实现关系对比

仿函数原型:

  • template bool equal_to //等于
  • template bool not_equal_to //不等于
  • template bool greater //大于
  • template bool greater_equal //大于等于
  • template bool less //小于
  • template bool less_equal //小于等于
void test01()
{
	vector v;
	v.push_back(10);
	v.push_back(30);
	v.push_back(50);
	v.push_back(40);
	v.push_back(20);
	for (vector::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
	//自己实现仿函数
	//sort(v.begin(), v.end(), MyCompare());
    //STL内建仿函数 大于仿函数
	sort(v.begin(), v.end(), greater());//大于
	for (vector::iterator it = v.begin(); it != v.end(); it++) {
		cout << *it << " ";
	}
	cout << endl;
}
int main() {
	test01();
	system("pause");
	return 0;
}

 93.STL-系统内置仿函数_第2张图片

逻辑仿函数 

功能描述:

  • 实现逻辑运算

函数原型:

  • template bool logical_and //逻辑与
  • template bool logical_or //逻辑或
  • template bool logical_not //逻辑非
void test01()
{
	vector v;
	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;
	//逻辑非 将v容器搬运到v2中,并执行逻辑非运算
	vector v2;
	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;
}
int main() {
	test01();
	system("pause");
	return 0;
}

93.STL-系统内置仿函数_第3张图片 

 写在最后:以上就是本篇文章的内容了,感谢你的阅读。如果感到有所收获的话可以给博主点一个赞哦。如果文章内容有遗漏或者错误的地方欢迎私信博主或者在评论区指出~  

你可能感兴趣的:(C++,c++,开发语言)