C++ 如何调用对象';s成员函数作为std算法的一元函数?

C++ 如何调用对象';s成员函数作为std算法的一元函数?,c++,stl,C++,Stl,我有一节课看起来像这样 class A { public: void doSomething(); } 我有这些类的数组。我想对数组中的每个项调用doSomething()。使用algorithms头最简单的方法是什么?使用std::mem\u fun\u ref将成员函数包装为一元函数 #include <algoritm> #include <functional> std::vector<A> the_vector; ... std::

我有一节课看起来像这样

class A 
{
public:
    void doSomething();
}

我有这些类的数组。我想对数组中的每个项调用doSomething()。使用algorithms头最简单的方法是什么?

使用std::mem\u fun\u ref将成员函数包装为一元函数

#include <algoritm>
#include <functional>

std::vector<A> the_vector;

...

std::for_each(the_vector.begin(), the_vector.end(),
              std::mem_fun_ref(&A::doSomething));
#包括
#包括
std::vector表示_向量;
...
std::for_each(_vector.begin()、_vector.end(),
std::mem_fun_ref(&A::doSomething));
如果向量包含指向类的指针,而不是对象本身,那么也可以使用std::mem_-fun

std::vector<A*> the_vector;

...

std::for_each(the_vector.begin(), the_vector.end(),
              std::mem_fun(&A::doSomething));
std::vector_向量;
...
std::for_each(_vector.begin()、_vector.end(),
std::mem_fun(&A::doSomething));

准确地说,在第二个示例中,向量不包含引用,而是包含对象/实例。mem_fun_ref中的“ref”表示该方法将转换为一个函数,该函数将引用实例作为参数。有了mem_fun,函数就有了一个指针。有效的STL是你的朋友——读一下Bradtg Murray:你问了自己的问题,回答了自己的问题,都是“大约3小时前”的,没有中间的答案?糟糕的形式。我投了反对票。@abelenky,你需要阅读常见问题解答。