如何将对象的成员函数作为std算法的unary_function调用?

时间:2009-02-28 15:43:37

标签: c++ stl

我有一个看起来像这样的课程。

class A 
{
public:
    void doSomething();
}

我有这些类的数组。我想在数组中的每个项目上调用doSomething()。使用算法标题最简单的方法是什么?

1 个答案:

答案 0 :(得分:8)

使用std :: mem_fun_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 :: mem_fun。

std::vector<A*> the_vector;

...

std::for_each(the_vector.begin(), the_vector.end(),
              std::mem_fun(&A::doSomething));