#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的用法例子
最新推荐文章于 2023-05-11 15:28:35 发布
本文通过一个具体的 C++ 示例展示了如何使用函数对象、绑定和内存函数指针来实现灵活的回调机制。该示例涉及 Widget 类的定义、操作函数的应用以及对不同 C++ 标准库组件的调用。
2413

被折叠的 条评论
为什么被折叠?



