<<<<<<< .working ======= <<<<<<< .working >>>>>>> .merge-right.r57125 ======= >>>>>>> .merge-right.r58299
Boost C++ Libraries Home Libraries People FAQ More

PrevUpHomeNext
accumulate
<<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working Description ======= ======= ======= ======= ======= ======= >>>>>>> .merge-right.r58559 >>>>>>> .merge-right.r58549 >>>>>>> .merge-right.r58299 >>>>>>> .merge-right.r57337 >>>>>>> .merge-right.r57242 Description >>>>>>> .merge-right.r57125

<<<<<<< .working For a sequence Seq, initial state, and binary function object or function pointer f, accumulate repeatedly applies binary f to each element of Seq and the previous state. ======= For a sequence seq, initial state initial_state, and binary function object or function pointer f, accumulate 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 each element of seq. >>>>>>> .merge-right.r57125

<<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working Synopsis ======= ======= ======= ======= ======= ======= >>>>>>> .merge-right.r58559 >>>>>>> .merge-right.r58549 >>>>>>> .merge-right.r58299 >>>>>>> .merge-right.r57337 >>>>>>> .merge-right.r57242 Synopsis >>>>>>> .merge-right.r57125
template<
    typename Sequence,
    typename State,
    typename F
    >
typename result_of::accumulate<Sequence, State, F>::type accumulate(
    Sequence& seq, State const& initial_state, F const& f);
<<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working

Table 1.34. Parameters

=======

Table 1.34. Parameters

=======

Table 1.38. Parameters

=======

Table 1.38. Parameters

=======

Table 1.38. Parameters

=======

Table 1.38. Parameters

=======

Table 1.38. Parameters

>>>>>>> .merge-right.r58559 >>>>>>> .merge-right.r58549 >>>>>>> .merge-right.r58299 >>>>>>> .merge-right.r57337 >>>>>>> .merge-right.r57242
>>>>>>> .merge-right.r57125 <<<<<<< .working <<<<<<< .working

Parameter

Requirement

Description

seq

A model of Forward Sequence, f(eN ....f(e2,f(e1,initial_state))) must be a valid expression for each element e1 to eN in seq

=======

seq

A model of Forward Sequence, f(s,e) must be a valid expression for current state s, and each element e in seq

>>>>>>> .merge-right.r57125 Operation's argument

initial_state

Any type

Initial state

f

boost::result_of<F(E,S)>::type is the return type of f(e,s) for each element e of type E in seq, and current state s of type S

=======

f

boost::result_of<F(S,E)>::type is the return type of f(s,e) current state s of type S, and for each element e of type E in seq

>>>>>>> .merge-right.r57125 Operation's argument

<<<<<<< .working
Expression =======
Expression >>>>>>> .merge-right.r57125 Semantics
accumulate(seq, initial_state, f);

Return type: Any type

<<<<<<< .working Semantics: Equivalent to f(eN ....f(e2,f(e1,initial_state))) where e1 ...eN are the elements of seq. ======= Semantics: Equivalent to f(... f(f(initial_state,e1),e2) ...eN) where e1 ...eN are the elements of seq. >>>>>>> .merge-right.r57125

<<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working Complexity ======= ======= ======= ======= ======= ======= >>>>>>> .merge-right.r58559 >>>>>>> .merge-right.r58549 >>>>>>> .merge-right.r58299 >>>>>>> .merge-right.r57337 >>>>>>> .merge-right.r57242 Complexity >>>>>>> .merge-right.r57125

Linear, exactly result_of::size<Sequence>::value applications of f.

<<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working Header ======= ======= ======= ======= ======= ======= >>>>>>> .merge-right.r58559 >>>>>>> .merge-right.r58549 >>>>>>> .merge-right.r58299 >>>>>>> .merge-right.r57337 >>>>>>> .merge-right.r57242 Header >>>>>>> .merge-right.r57125
#include <boost/fusion/algorithm/iteration/accumulate.hpp>
#include <boost/fusion/include/accumulate.hpp>
<<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working <<<<<<< .working Example ======= ======= ======= ======= ======= ======= >>>>>>> .merge-right.r58559 >>>>>>> .merge-right.r58549 >>>>>>> .merge-right.r58299 >>>>>>> .merge-right.r57337 >>>>>>> .merge-right.r57242 Example >>>>>>> .merge-right.r57125
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>(t);
    }
};
...
const vector<int,int> vec(1,2);
assert(accumulate(vec,std::string(""), make_string()) == "12");

PrevUpHomeNext