#include<iostream>
#include<algorithm>
#include<vector>
using namespace std;
class Widget:public unary_function<int,void>
{
int id;
public:
Widget(int x):id(x){}
void Multiply(int x) const
{
cout<<"id:"<<id<<" "<<id*x<<endl;
}
void Output() const
{
cout<<"id:"<<id<<endl;
}
};
class Operation:public binary_function<Widget*,int,void>
{
public:
void operator()(Widget *wid,int x) const
{
wid->Multiply(x);
}
};
int main()
{
vector<Widget*> vecs;
vecs.push_back(new Widget(1));
vecs.push_back(new Widget(2));
vecs.push_back(new Widget(3));
vecs.push_back(new Widget(4));
vecs.push_back(new Widget(5));
//for_each(vecs.begin(),vecs.end(),mem_fun_ref(&Widget::Multiply));
//for_each(vecs.begin(),vecs.end(),bind2nd(Operation(),4));
//for_each(vecs.begin(),vecs.end(),bind2nd(mem_fun(&Widget::Multiply),4));
const_mem_fun1_t<void,Widget,int> fun=mem_fun(&Widget::Multiply);
fun(vecs[1],5);
const_mem_fun_t<void,Widget> fun2=mem_fun(&Widget::Output);
fun2(vecs[2]);
}
mem_fun和bind2nd的用法例子
最新推荐文章于 2019-10-17 16:04:41 发布