std::for_each on a member function with 1 argument
I'm wondering how to implement what is stated in the title. I've tried something like...
std::for_each( a.begin(), a.end(), std::mem_fun_ref( &myClass::someFunc ) )
but I get an error saying that the "term" (I"m assuming it means the 3rd argument) doesn't evaluate to a function with 1 argument, even though someFunc
does take one argument - the type of the objects stored in a
.
I'm wondering if what I'm trying to do is possible using the standard library (I know I can do it easily using boo开发者_开发知识库st).
P.S. Does using for_each
and mem_fun_ref
have any performance implications in comparison to just iterating through a
manually and passing the object to someFunc
?
Even though someFunc is a member with one parameter, mem_fun_ref uses an implicit first argument of "myClass". You want to use the vector's items as the 2nd argument .
And there are probably no negative performance implications of using for_each and mem_fun_ref. The compiler will generate comparable code. But, the only way to be sure is to benchmark :)
std::for_each(a.begin(), a.end(),
std::bind1st(
std::mem_fun_ref( &MyClass::SomeFunc ),
my_class ));
I think you need to use bind_1st to supply the hidden "this" argument. Or do you mean that the "this" argument is the only one, someFunc has no parameters of its own?
精彩评论