一、算数仿函数
# include <iostream>
# include <functional>//使用这个必须包涵头文件
using namespace std;
int main (void)
{
plus<int>p;//加法
cout<<p(1,2)<<endl;
negate<int>q;//取反
cout<<q(10)<<endl;
minus<int>m;//减法
cout<<m(3,1)<<endl;
multiplies<int>n;//乘法
cout<<n(2,3)<<endl;
divides<int>a;//除法
cout<<a(6,2)<<endl;
return 0;
}
二、关系仿函数(一般只用greater)
# include <iostream>
# include <vector>
# include <functional>
# include <algorithm>
using namespace std;
int main (void)
{
vector<int> v;
v.push_back(20);
v.push_back(10);
v.push_back(50);
v.push_back(30);
v.push_back(40);
sort(v.begin(),v.end(),greater<int>());//greater<int>()是系统提供的从大到小仿函数
for(vector<int>::iterator it=v.begin();it!=v.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}
三、逻辑仿函数(一般不咋用)
logical_not()取反仿函数;logical_and()逻辑与仿函数;logical_or()逻辑或仿函数
# include <iostream>
# include <vector>
# include <algorithm>
# include <functional>
using namespace std;
int main (void)
{
vector<bool> v;
v.push_back(true);
v.push_back(false);
v.push_back(true);
v.push_back(false);
for(vector<bool>::iterator it1=v.begin();it1!=v.end();++it1)
{
cout<<*it1<<" ";
}
cout<<endl;
vector<bool> v1;
v1.resize(v.size());
transform(v.begin(),v.end(),v1.begin(),logical_not<bool>());//transform()为algorithm中的搬运算法,在使用transform时要先开辟容器的空间,即v1.resize();logical_not()为取反仿函数
for(vector<bool>::iterator it=v1.begin();it!=v1.end();++it)
{
cout<<*it<<" ";
}
cout<<endl;
return 0;
}