0.前言
1.算术仿函数
#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;
}
2.关系仿函数
#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;
}
3.逻辑仿函数
文章来源:https://www.toymoban.com/news/detail-695645.html
#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;
}
文章来源地址https://www.toymoban.com/news/detail-695645.html
到了这里,关于【C++】STL-函数对象-内建函数对象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!