 
|  |  | 
| Category: algorithms | Component type: function | 
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);
                   
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]
int 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;
}  
[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.
| Contact Us | Site Map | Trademarks | Privacy | Using this site means you accept its Terms of Use | 
| Copyright © 2009 - 2014 Silicon Graphics International. All rights reserved. |