Как вызвать функцию-член объекта как unary_function для алгоритмов std? - PullRequest
4 голосов
/ 28 февраля 2009

У меня есть класс, который выглядит следующим образом.

class A 
{
public:
    void doSomething();
}

У меня есть массив этих классов. Я хочу вызвать doSomething () для каждого элемента в массиве. Какой самый простой способ сделать это с помощью заголовка алгоритмов?

1 Ответ

8 голосов
/ 28 февраля 2009

Используйте 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));
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...