VMS Help
CXXLSTD, Algorithms, accumulate

 *Conan The Librarian

 			   Standard C++	Library
 		 Copyright 1996, Rogue Wave Software, Inc.

 NAME

   accumulate  -	Accumulate all elements	within a range into a single
   value.

 SYNOPSIS

   #include <numeric>
   template <class InputIterator, class T>
   T accumulate (InputIterator first,
 	       InputIterator last,
 	       T init);

   template <class InputIterator,
 	   class T,
 	   class BinaryOperation>
   T accumulate (InputIterator first,
 	       InputIterator last,
 	       T init,
 	       BinaryOperation binary_op);

 DESCRIPTION

   accumulate applies a binary operation	to init	and each value in the
   range [first,last).	The result of each operation is	returned in
   init. This process aggregates the result of	performing the
   operation on every element  of the sequence into a single value.

   Accumulation is done by initializing the accumulator acc with	the
   initial value	init and then modifying	it with	acc = acc + *i or acc
   last) in order.  If the sequence is empty, accumulate returns init.

 COMPLEXITY

   accumulate performs exactly last-first applications of the binary
   operation (operator+ by	default).

 EXAMPLE

   //
   // accum.cpp
   //
    #include <numeric>	//for accumulate
    #include <vector>	//for vector
    #include <functional> //for times
    #include <iostream.h>

   int main()
    {
      //
      //Typedef for vector iterators
      //
     typedef vector<int>::iterator iterator;
      //
      //Initialize a vector using an array of ints
      //
     int	d1[10] = {1,2,3,4,5,6,7,8,9,10};
     vector<int>	v1(d1, d1+10);
      //
      //Accumulate sums and products
      //
     int	sum = accumulate(v1.begin(), v1.end(), 0);
     int	prod = accumulate(v1.begin(), v1.end(),
 		1, times<int>());
      //
      //Output the results
      //
     cout << "For the series: ";
     for(iterator i = v1.begin(); i != v1.end();	i++)
 	cout <<	*i << "	";

     cout << " where N =	10." <<	endl;
     cout << "The sum = (N*N + N)/2 = " << sum << endl;
     cout << "The product = N! =	" << prod << endl;
     return 0;
    }
   Output :
   For the series: 1 2 3	4 5 6 7	8 9 10	where N	= 10.
   The sum = (N*N + N)/2	= 55
   The product =	N! = 3628800

 WARNINGS

   If your compiler does	not support default template parameters	then
   you need to always supply the Allocator template argument.  For
   instance you'll have to write:

   vector<int,allocator<int> >

   instead of:

   vector<int>

 STANDARDS CONFORMANCE
   ANSI X3J16/ISO WG21 Joint C++	Committee
  Close     Help