![]() |
Home | Libraries | People | FAQ | More |
For a sequence seq, initial
state initial_state,
and binary function object or function pointer f,
reverse_iter_fold returns the result of the repeated
application of binary f
to the result of the previous f
invocation (inital_state
if it is the first call) and iterators on each element of seq.
template< typename Sequence, typename State, typename F > typenameresult_of::reverse_iter_fold<Sequence, State const, F>::type reverse_iter_fold( Sequence& seq, State const& initial_state, F f); template< typename Sequence, typename State, typename F > typenameresult_of::reverse_iter_fold<Sequence const, State const, F>::type reverse_iter_fold( Sequence const& seq, State const& initial_state, F f);
Table 1.43. Parameters
|
Parameter |
Requirement |
Description |
|---|---|---|
|
|
A model of Bidirectional Sequence |
Operation's argument |
|
|
Any type |
Initial state |
|
|
|
Operation's argument |
reverse_iter_fold(seq, initial_state, f);
Return type: Any type
Semantics: Equivalent to f(...
f(f(initial_state,itN),itN-1) ...it1) where it1 ...itN
are consecutive iterators on the elements of seq.
Linear, exactly applications of result_of::size<Sequence>::valuef.
#include <boost/fusion/algorithm/iteration/reverse_iter_fold.hpp> #include <boost/fusion/include/reverse_iter_fold.hpp>
struct make_string { typedef std::string result_type; template<typename T> std::string operator()(const std::string& str, const T& t) const { return str + boost::lexical_cast<std::string>(deref(t)); } }; ... constvector<int,int> vec(1,2); assert(reverse_iter_fold(vec,std::string(""), make_string()) == "21");