请教下boost:mem_fn和std:mem_fun_ref有什么区别呢?多谢
请问下boost::mem_fn和std::mem_fun_ref有什么区别呢??谢谢
一下代码在VS2010里面运行的结果相同,编译也没问题(貌似在VC6里面mem_fun_ref通不过,不过暂且不管)
想问下mem_fn和mem_fun_ref在使用上有什么区别?
在以下的使用上个人感觉没什么区别吧??
class TT
{
public:
TT(int i):mi(i){}
void Print() const
{
cout << "Mi is :" << mi << endl;
}
private:
int mi;
};
void Adaptor_Print(const TT& t)
{
t.Print();
}
int main()
{
vector<TT> v;
for(int i = 0;i < 10;i++)
{
v.push_back(TT(i));
}
for_each(v.begin(),v.end(),Adaptor_Print);
for_each(v.begin(),v.end(),mem_fn(&TT::Print));
for_each(v.begin(),v.end(),mem_fun_ref(&TT::Print));
std::cin.get();
return (0);
}
------解决方案--------------------
mem_fun
Convert member function to function object (pointer version) (function template)
mem_fun_ref
Convert member function to function object (reference version) (class template)
------解决方案--------------------
很显然, boost::mem_fn 比 std::mem_fun_ref 更强大.
它可以用于带有任意个参数的函数上, 并且还可以用于数据成员上.
------解决方案--------------------
1 L说的对不??
stl确实有mem_fun这个配接器啊
一下代码在VS2010里面运行的结果相同,编译也没问题(貌似在VC6里面mem_fun_ref通不过,不过暂且不管)
想问下mem_fn和mem_fun_ref在使用上有什么区别?
在以下的使用上个人感觉没什么区别吧??
class TT
{
public:
TT(int i):mi(i){}
void Print() const
{
cout << "Mi is :" << mi << endl;
}
private:
int mi;
};
void Adaptor_Print(const TT& t)
{
t.Print();
}
int main()
{
vector<TT> v;
for(int i = 0;i < 10;i++)
{
v.push_back(TT(i));
}
for_each(v.begin(),v.end(),Adaptor_Print);
for_each(v.begin(),v.end(),mem_fn(&TT::Print));
for_each(v.begin(),v.end(),mem_fun_ref(&TT::Print));
std::cin.get();
return (0);
}
------解决方案--------------------
mem_fun
Convert member function to function object (pointer version) (function template)
mem_fun_ref
Convert member function to function object (reference version) (class template)
------解决方案--------------------
很显然, boost::mem_fn 比 std::mem_fun_ref 更强大.
它可以用于带有任意个参数的函数上, 并且还可以用于数据成员上.
------解决方案--------------------
1 L说的对不??
stl确实有mem_fun这个配接器啊