| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Общие вопросы > как переделать цикл используя алгоритмы |
| Автор: korian 22.3.2008, 14:11 | ||
как? и можно ли? записать такой же цикл с помощью алгоритмов (думаю for_each надо юзать), не добавляя новый класс (взякими binder1st, mem_fun и тд) |
| Автор: archimed7592 22.3.2008, 14:47 | ||
Со стандартными биндерами тоже можно, но лень расписывать и, BTW, как минимум понадобится helper-class подобный boost::reference_wrapper(если я не ошибаюсь). |
| Автор: UnrealMan 22.3.2008, 15:30 |
В случае += сгодится и просто sum. Добавлено через 34 секунды Там нет функтора для += |
| Автор: archimed7592 22.3.2008, 15:49 |
Да, действительно... Как и для =. |
| Автор: blinded 22.3.2008, 17:02 |
| неправда, есть std::accumulate который BinaryOp |
| Автор: UnrealMan 22.3.2008, 18:29 |
Однако такой BinaryOp всё равно не выразить средствами STL. |
| Автор: korian 22.3.2008, 18:59 |
| я так понял, что основная проблема в том, что нельзя вызвать функцию класса с больше чем 1 параметрами. std::accumulate - интересная штука, правда мне не понравилась, т.к. реализуется с помощью оператора +, а это куча лишних копирований. |
| Автор: comcon1 23.3.2008, 00:32 |
| есть еще phoenix, он вроде - альтернатива к lambda. Я им в spirit для акторов юзался, но по логике, должен и сюда подходить. |
| Автор: UnrealMan 23.3.2008, 12:36 | ||||
Хотя бы поэтому. С помощью STL не забиндишь метод с двумя параметрами. Добавлено через 1 минуту и 24 секунды
При использовании std::accumulate это не проблема |