• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1[/
2    Copyright 2010 Neil Groves
3    Distributed under the Boost Software License, Version 1.0.
4    (See accompanying file LICENSE_1_0.txt or copy at http://www.boost.org/LICENSE_1_0.txt)
5/]
6[section:accumulate accumulate]
7
8[heading Prototype]
9
10``
11template<
12    class SinglePassRange,
13    class Value
14    >
15Value accumulate(const SinglePassRange& source_rng,
16                 Value init);
17
18template<
19    class SinglePassRange,
20    class Value,
21    class BinaryOperation
22    >
23Value accumulate(const SinglePassRange& source_rng,
24                 Value init,
25                 BinaryOperation op);
26``
27
28[heading Description]
29
30`accumulate` is a generalisation of summation. It computes a binary operation (`operator+`
31in the non-predicate version) of `init` and all of the elements in `rng`.
32
33The return value is the resultant value of the above algorithm.
34
35[heading Definition]
36
37Defined in the header file `boost/range/numeric.hpp`
38
39[heading Requirements]
40
41[heading For the first version]
42
43# `SinglePassRange` is a model of the __single_pass_range__ Concept.
44# `Value` is a model of the `AssignableConcept`.
45# An `operator+` is defined for a left-hand operand of type `Value` and a right-hand operand of the `SinglePassRange` value type.
46# The return type of the above operator is convertible to `Value`.
47
48[heading For the second version]
49
50# `SinglePassRange` is a model of the __single_pass_range__ Concept.
51# `Value` is a model of the `AssignableConcept`.
52# `BinaryOperation` is a model of the `BinaryFunctionConcept`.
53# `Value` is convertible to `BinaryOperation`'s first argument type.
54# `SinglePassRange`'s value type is convertible to `BinaryOperation`'s second argument type.
55# The return type of `BinaryOperation` is convertible to `Value`.
56
57[heading Complexity]
58
59Linear. Exactly `distance(source_rng)`.
60
61[endsect]
62