stl algorithms
От: csharper  
Дата: 10.10.05 10:59
Оценка: :)
Hi

Объясните как можно использовать нестатическую функцию класса в качестве stl алгоритма, к примеру for_each(). А еще объясните пожалуйста в чем польза функторов, ужасно неудобная фича плодить классы с перегруженным operator().

Спасибо.
... << RSDN@Home 1.1.4 beta 6a rev. 444>>
Re: stl algorithms
От: Glоbus Украина  
Дата: 10.10.05 11:03
Оценка:
Здравствуйте, csharper, Вы писали:

C>Hi


C>Объясните как можно использовать нестатическую функцию класса в качестве stl алгоритма, к примеру for_each().


Используй mem_fun, mem_fun_ref и т.п.

А еще объясните пожалуйста в чем польза функторов, ужасно неудобная фича плодить классы с перегруженным operator().

Вообще-то с помощью классов можно удобно сделать функтор с состоянием (там правда есть свои ограничения и тонкости, но сделать можно). Ну а если тебе так не нравится плодить классы — успользуй статические фугкции члены — они полностью заменяют классы функторов, если тебе нужен только оператор ().

C>Спасибо.
Удачи тебе, браток!
Re: stl algorithms
От: Bell Россия  
Дата: 10.10.05 11:09
Оценка: 2 (1)
Здравствуйте, 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.
Любите книгу — источник знаний (с) М.Горький
Re: stl algorithms
От: VladGalkin Украина  
Дата: 10.10.05 12:30
Оценка:
Здравствуйте, csharper, Вы писали:

C>Hi


C>Объясните как можно использовать нестатическую функцию класса в качестве stl алгоритма, к примеру for_each().

mem_fun etc
C> А еще объясните пожалуйста в чем польза функторов, ужасно неудобная фича плодить классы с перегруженным operator().
А какая альтернатива?
... << RSDN@Home 1.1.4 stable rev. 510>>
ДЭ!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.