|
ALINK="#ff0000">
partial_sum
PrototypePartial_sum is an overloaded name; there are actually two partial_sum functions.template <class InputIterator, class OutputIterator> OutputIterator partial_sum(InputIterator first, InputIterator last, OutputIterator result); template <class InputIterator, class OutputIterator, class BinaryOperation> OutputIterator partial_sum(InputIterator first, InputIterator last, OutputIterator result, BinaryOperation binary_op); DescriptionPartial_sum calculates a generalized partial sum: *first is assigned to *result, the sum of *first and *(first + 1) is assigned to *(result + 1), and so on. [1]More precisely, a running sum is first initialized to *first and assigned to *result. For each iterator i in [first + 1, last), in order from beginning to end, the sum is updated by sum = sum + *i (in the first version) or sum = binary_op(sum, *i) (in the second version) and is assigned to *(result + (i - first)). [2] DefinitionDefined in the standard header numeric, and in the nonstandard backward-compatibility header algo.h.Requirements on typesFor the first version:
Preconditions
ComplexityLinear. Zero applications of the binary operation if [first, last) is a empty range, otherwise exactly (last - first) - 1 applications.Exampleint main() { const int N = 10; int A[N]; fill(A, A+N, 1); cout << "A: "; copy(A, A+N, ostream_iterator<int>(cout, " ")); cout << endl; cout << "Partial sums of A: "; partial_sum(A, A+N, ostream_iterator<int>(cout, " ")); cout << endl; } Notes[1] Note that result is permitted to be the same iterator as first. This is useful for computing partial sums "in place". [2] The binary operation is not required to be either associative or commutative: the order of all operations is specified. See alsoadjacent_difference, accumulate, inner_product, countCopyright © 1999 Silicon Graphics, Inc. All Rights Reserved. TrademarkInformation
|