分类 : 算术仿函数、关系仿函数、逻辑仿函数
用法 :
1 用法和一般函数完全相同
2 需要包含头文件 #include
注:三类仿函数的代码如下,其中的逻辑仿函数由于不常用,因此没有写代码进行验证
#include <iostream>
#include <vector>
#include <functional>
#include <algorithm>
using namespace std;
/*
1 算术仿函数:主要实现四则运算(其中negate是一元运算,其他都是二元运算)
2 仿函数原型(加减乘除、取模、取反)
a template<class T> T plus<T>
b template<class T> T minus<T>
c template<class T> T multiplies<T>
d template<class T> T divides<T>
e template<class T> T modulus<T>
f template<class T> T negate<T>
*/
void test01()
{
negate<int> n;
cout << n(50) << endl;
plus<int> p;
cout << p(20,39) << endl;
}
/*
2 关系仿函数:实现关系对比
a template<class T> bool equal_to<T>
b template<class T> bool not_equal_to<T>
c template<class T> bool greater<T>
d template<class T> bool greater_equal<T>
e template<class T> bool less<T>
f template<class T> bool less_equal<T>
*/
void test02()
{
vector<int> v;
v.push_back(4);
v.push_back(1);
v.push_back(3);
v.push_back(5);
v.push_back(2);
sort(v.begin(), v.end(), greater<int>()); // 重点在这里
cout << "排序后:";
for(vector<int>::iterator it=v.begin(); it!=v.end(); it++)
{
cout << *it << " ";
}
cout << endl;
}
/*
3 逻辑仿函数:与、或、非
a template<class T> bool logical_and<T>
b template<class T> bool logical_or<T>
c template<class T> bool logical_not<T>
*/
int main(int argc, char **argv)
{
test01();
test02();
return 0;
}