.. Algorithms/Iteration Algorithms//accumulate |10 accumulate ========== Synopsis -------- .. parsed-literal:: template< typename Sequence , typename State , typename ForwardOp > struct accumulate { typedef |unspecified| type; }; Description ----------- Returns the result of the successive application of binary ``ForwardOp`` to the result of the previous ``ForwardOp`` invocation (``State`` if it's the first call) and every element of the sequence in the range |begin/end| in order. |Note:| ``accumulate`` is a synonym for |fold| |-- end note| Header ------ .. parsed-literal:: #include Parameters ---------- +---------------+-------------------------------+---------------------------------------------------+ | Parameter | Requirement | Description | +===============+===============================+===================================================+ | ``Sequence`` | |Forward Sequence| | A sequence to iterate. | +---------------+-------------------------------+---------------------------------------------------+ | ``State`` | Any type | The initial state for the first ``ForwardOp`` | | | | application. | +---------------+-------------------------------+---------------------------------------------------+ | ``ForwardOp`` | Binary |Lambda Expression| | The operation to be executed on forward | | | | traversal. | +---------------+-------------------------------+---------------------------------------------------+ Expression semantics -------------------- For any |Forward Sequence| ``s``, binary |Lambda Expression| ``op``, and arbitrary type ``state``: .. parsed-literal:: typedef accumulate::type t; :Return type: A type. :Semantics: Equivalent to .. parsed-literal:: typedef fold::type t; Complexity ---------- Linear. Exactly ``size::value`` applications of ``op``. Example ------- .. parsed-literal:: typedef vector types; typedef accumulate< types , int_<0> , if_< is_float<_2>,next<_1>,_1 > >::type number_of_floats; BOOST_MPL_ASSERT_RELATION( number_of_floats::value, ==, 4 ); See also -------- |Algorithms|, |fold|, |reverse_fold|, |iter_fold|, |reverse_iter_fold|, |copy|, |copy_if| .. copyright:: Copyright © 2001-2009 Aleksey Gurtovoy and David Abrahams Distributed under the Boost Software License, Version 1.0. (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)