开发者

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?

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜