source:
downloads/boost_1_33_1/libs/mpl/doc/src/refmanual/accumulate.rst
@
12
| Last change on this file since 12 was 12, checked in by landauf, 18 years ago | |
|---|---|
| File size: 2.7 KB | |
accumulate
Synopsis
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<Sequence>| in order. |Note:| accumulate is a synonym for |fold| |-- end note|
Header
#include <boost/mpl/accumulate.hpp>
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:
typedef accumulate<s,state,op>::type t;
| Return type: | A type. |
|---|---|
| Semantics: | Equivalent to typedef fold<s,state,op>::type t; |
Complexity
Linear. Exactly size<s>::value applications of op.
Example
typedef vector<long,float,short,double,float,long,long double> 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|
Note: See TracBrowser
for help on using the repository browser.










