【C++】STL-函数对象-内建函数对象

这篇具有很好参考价值的文章主要介绍了【C++】STL-函数对象-内建函数对象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

0.前言

【C++】STL-函数对象-内建函数对象,C++,c++,开发语言

1.算术仿函数

【C++】STL-函数对象-内建函数对象,C++,c++,开发语言

#include <iostream>
using namespace std;

// STL-内建函数对象-算术仿函数
#include<functional>  // 内建函数对象头文件

//以下举例两个仿函数 -- negate and plus

// negate 一元仿函数 取反仿函数
void test01()
{
	negate<int>n;

	cout << n(40) << endl;
}

// plus 二元仿函数 加法
void test02()
{
	plus<int>p;

	cout << p(40, 10) << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

【C++】STL-函数对象-内建函数对象,C++,c++,开发语言

2.关系仿函数

【C++】STL-函数对象-内建函数对象,C++,c++,开发语言
【C++】STL-函数对象-内建函数对象,C++,c++,开发语言

#include <iostream>
using namespace std;

// STL-内建函数对象-关系仿函数
//举例  -- 大于 greater
#include<vector>
#include<algorithm>
#include<functional>

class MyCompare
{
public:
	bool operator()(int val1, int val2)
	{
		return val1 > val2;
	}
};

void test01()
{
	vector<int>v;
	v.push_back(10);
	v.push_back(40);
	v.push_back(20);
	v.push_back(30);
	v.push_back(50);

	for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	//降序
 // sort(v.begin(), v.end(), MyCompare());
	//greater<int>() 内建函数对象
	sort(v.begin(), v.end(), greater<int>()); 
	for (vector<int>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;
}

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

【C++】STL-函数对象-内建函数对象,C++,c++,开发语言

3.逻辑仿函数

【C++】STL-函数对象-内建函数对象,C++,c++,开发语言
【C++】STL-函数对象-内建函数对象,C++,c++,开发语言

#include <iostream>
using namespace std;

// STL-内建函数对象-逻辑仿函数
//举例  -- 逻辑非 logical_not
#include<vector>
#include<algorithm>
#include<functional>

void test01()
{
	vector<bool>v;
	v.push_back(true);
	v.push_back(false);
	v.push_back(true);
	v.push_back(false);

	for (vector<bool>::iterator it = v.begin(); it != v.end(); it++)
	{
		cout << *it << " ";
	}
	cout << endl;

	//利用逻辑非 将容器v搬运到 容器v2中, 并执行取反操作
	vector<bool>v2;
	v2.resize(v.size());
	transform(v.begin(), v.end(), v2.begin(), logical_not<bool>());

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

int main()
{
	test01();
	cout << "------------------------" << endl;
	//test02();
	//cout << "------------------------" << endl << endl;
	//test03();

	//**************************************
	system("pause");
	return 0;
} 

【C++】STL-函数对象-内建函数对象,C++,c++,开发语言文章来源地址https://www.toymoban.com/news/detail-695645.html

到了这里,关于【C++】STL-函数对象-内建函数对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包