在对象向量上调用成员函数

Sam*_*Sam 4 c++ foreach lambda boost std

给定一个vector<Object>,在那里对象有一个功能run(),有没有办法来调用run()的for_each,只使用STD功能/模板?

注意,这run()不是一个静态函数,它实际上应该转换被引用的对象(当然,在我的小例子中并非如此)

我知道的boost::lambda方式

class Object
{
public:
    int run(){/* change object state */}
};

vector<Object> v(10);
for_each(v.begin(), v.end(), bind(&Object::run, _1));
Run Code Online (Sandbox Code Playgroud)

但我很好奇它是否是一种标准(非Cxx11)方式.

Pio*_*ycz 7

有(C++)方式:

for_each(v.begin(), v.end(), mem_fun_ref(&Object::run));
Run Code Online (Sandbox Code Playgroud)

见http://www.cplusplus.com/reference/std/functional/mem_fun_ref/