文章目录
- 算数仿函数
- 代码工程
- 运行结果
- 关系仿函数
- 代码工程
- 运行结果
- 逻辑仿函数
- 代码工程
- 运行结果
算数仿函数
需要添加#include<functional>
头文件使用
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<functional>
using namespace std;
/*其中negate是一元运算,其他的事二元运算*/
/*1.加法仿函数 - plus*/
/*2.减法仿函数 - minus*/
/*3.乘法仿函数 - multiplies*/
/*4.除法仿函数 - divides*/
/*5.取模仿函数 - modulus*/
/*6.取反仿函数 - negate*/
void test01()
{
/*1.加法仿函数*/
plus<int>s;
cout << "plus 相加" << "\t" << s(20, 10) << endl;
/*2.减法仿函数 - minus*/
minus<int>m;
cout << "minus 相减" << "\t" << m(20, 10) << endl;
/*3.乘法仿函数 - multiplies*/
multiplies<int>mu;
cout << "multiplies 相乘" << "\t" << mu(20, 10) << endl;
/*4.除法仿函数 - divides*/
divides<int>d;
cout << "divides 相除" << "\t" << d(20, 10) << endl;
/*5.取模仿函数 - modulus*/
modulus<int>mod;
cout << "modulus 取模" << "\t" << mod(20, 10) << endl;
/*6.取反仿函数 - negate*/
negate<int>neg;
cout << "negate 取反" << "\t" << neg(20) << endl;
return;
}
int main()
{
test01();
return 0;
}
运行结果
关系仿函数
需要添加#include<functional>
头文件使用
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<functional>
#include<algorithm>
using namespace std;
/*1.等于 - equal_to */
/*2.不等于 - not_equal_to */
/*3.大于 - greater */
/*4.大于等于 - greater_equal*/
/*5.小于 - less */
/*6.小于等于 - less_equal */
void printVector(vector<int>&v)
{
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl;
}
void test01()
{
vector<int>v;
v.push_back(50);
v.push_back(10);
v.push_back(40);
v.push_back(30);
v.push_back(60);
v.push_back(20);
printVector(v);
/*使用greater仿函数,完成降序操作*/
sort(v.begin(), v.end(), greater<int>());
printVector(v);
return;
}
int main()
{
test01();
return 0;
}
运行结果
逻辑仿函数
需要添加#include<functional>
头文件使用
代码工程
#define _CRT_SECURE_NO_WARNINGS
#include<iostream>
#include<vector>
#include<functional>
#include<algorithm>
using namespace std;
/*1.与 - logical_and*/
/*2.或 - logical_or */
/*3.非 - logical_not*/
void printVector(vector<bool>&v)
{
for (int i = 0; i < v.size(); i++)
{
cout << v[i] << " ";
}
cout << endl;
}
void test01()
{
vector<bool>v;
v.push_back(true);
v.push_back(true);
v.push_back(true);
v.push_back(true);
printVector(v);
/*利用逻辑非,将容器v的元素 搬运 到容器v1中,并执行取反操作*/
vector<bool>v1;
v1.resize(v.size());
transform(v.begin(), v.end(), v1.begin(), logical_not<bool>());
printVector(v1);
return;
}
int main()
{
test01();
return 0;
}