Как использовать for_each с функцией в качестве перегруженного оператора () - PullRequest
0 голосов
/ 21 июня 2010

У меня есть std :: vector функциональных объектов.Каждый объект может принимать int, поэтому я могу сказать obj (4) и получить результат int.Как я могу использовать алгоритм for_each для работы с каждым элементом вектора?

Ответы [ 2 ]

1 голос
/ 21 июня 2010

Вы должны создать функтор, вызывающий каждый объект:

struct Caller {
  int value;
  void operator()( const YourFunctorHere& f ) const {
    f( value );
  }
} caller;
std::for_each( functors.begin(), functors.end(), caller );
1 голос
/ 21 июня 2010

Какая версия C ++?C ++ 0x Lambdas делают это коротким и приятным.

В C ++ 03 цикл for будет проще, чем for_each.

.вам нужно создать функтор, который хранит все входные аргументы в переменных-членах и передает их в for_each.Каждый функтор в векторе будет передан этому функтору посетителя в качестве аргумента, затем вам нужно вызвать его оператор () с сохраненными аргументами.

...