Hi
Объясните как можно использовать нестатическую функцию класса в качестве stl алгоритма, к примеру for_each(). А еще объясните пожалуйста в чем польза функторов, ужасно неудобная фича плодить классы с перегруженным operator().
Спасибо.
... << RSDN@Home 1.1.4 beta 6a rev. 444>>
Здравствуйте, csharper, Вы писали:
C>Hi
C>Объясните как можно использовать нестатическую функцию класса в качестве stl алгоритма, к примеру for_each().
Я так понимаю, что речь идет о использовании нестатической функции класса в качестве функтора, перелаваемого алгоритму. Если я прав, то вот простейший пример:
#include <vector>
#include <algorithm>
#include <functional>
struct A
{
void f() {}
};
int main()
{
std::vector<A*> arr;
//...
std::for_each(arr.begin(), arr.end(), std::mem_fun(&A::f));
return 0;
}
C>А еще объясните пожалуйста в чем польза функторов, ужасно неудобная фича плодить классы с перегруженным operator().
Насчет хуже/лучше — воспользуйся поиском — этот вопрос обсуждался уже не раз.
А что касается классов — функторов, то в некоторых ситуациях помогают стандартные функторы, адаптеры и биндеры. Кроме того, весьма неплохо для этой цели подходят boost::bind и boost::lambda.
Здравствуйте, csharper, Вы писали:
C>Hi
C>Объясните как можно использовать нестатическую функцию класса в качестве stl алгоритма, к примеру for_each().
mem_fun etc
C> А еще объясните пожалуйста в чем польза функторов, ужасно неудобная фича плодить классы с перегруженным operator().
А какая альтернатива?
... << RSDN@Home 1.1.4 stable rev. 510>>