Re: ranges, unzip
От: alexeiz  
Дата: 19.09.11 03:34
Оценка: 20 (1)
Здравствуйте, c-smile, Вы писали:

CS>Пока получается как-то так:


CS>
CS>int vmax_total = sequence.unzip([](const foo& el){return el.vmax}).accumulate(0);
CS>


CS>Возможно ли какое-нибудь достойное решение с использованием C++11 ?


Что ты хочешь, алгоритм уже записан оптимальным образом. Используя boost::range, unzip можно заменить на "| transformed", но это практически одно и тоже:
accumulate( sequence | transformed([](foo const & el) { return el.vmax; })
          , 0);


С boost::lambda можно получить так:
accumulate(sequence | transformed(&_1 ->* &foo::vmax), 0)
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.