我想知道如何实现标题中陈述的内容。我试着像...std :: for_each在具有1个参数的成员函数上
std::for_each(a.begin(), a.end(), std::mem_fun_ref(&myClass::someFunc))
,但我得到一个错误说的“术语”(I“M假设这意味着第三个参数)不计算为一个函数参数1 ,即使someFunc
没有采取一个参数 - 对象的类型存储在a
。
我想知道如果我想要做的是可能使用标准库(我知道我可以轻松地使用boost )
PS使用for_each
和mem_fun_ref
与只通过手动迭代a
并将对象传递给someFunc
相比,有任何性能影响?
我假设我会使用bind2nd。现在我正在考虑如何指定在迭代中使用当前元素。我想我只会使用提升.. – Person 2010-04-04 02:58:41
不,仍然使用bind1st。 mem_fun_ref变成一个带有两个参数的函数。第一个是MyClass,第二个是你的成员函数参数。您想要将第一个参数绑定到mem_fun_ref到您的类实例。 – Stephen 2010-04-04 03:50:12
@Person:如果你要使用Boost,我建议使用他们的foreach宏。 'std :: for_each'只是一个失败的想法,并且通常会导致更多的扩展,更难以阅读代码。 – GManNickG 2010-04-04 03:52:14