您的位置:首页 > 其它

mem_fun和bind2nd的用法例子

2012-01-28 22:42 363 查看
#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]);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: