#include <deque> #include <boost/lambda/bind.hpp> #include <boost/lambda/construct.hpp> template<typename T> void summarize() { typedef std::pair<T, T> pt_t; std::deque<pt_t> xs; using namespace boost::lambda; // fill xs with stuff pt_t res = std::accumulate( xs.begin(), xs.end(), std::make_pair(T(),T()), bind( constructor<pt_t>(), bind( std::plus<T>(), bind(&pt_t::first,_1), bind(&pt_t::first,_2) ), bind( std::plus<T>(), bind(&pt_t::second,_1), bind(&pt_t::second,_2) ) ) ); }
пятница, 13 мая 2011 г.
sum of pairs
Вы когда нибудь пробовали получить сумму элементов контейнера, который хранит элементы типа std::pair? Если да, то вы заметили, что std::pair не определяет operator+. На помощь приходит новый стандарт, в котором пишем лямбда-функцию, или библиотека boost::lambda с которой получаем следующий прекрасный но сложноперевариваемый код:
Posted by
Kirill V. Lyadvinsky
обновлено:
2014-02-17T06:07:07Z
Комментировать в ВКонтакте
Подписаться на:
Комментарии к сообщению
(
Atom
)