The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

Интерактивная система просмотра системных руководств (man-ов)

 ТемаНаборКатегория 
 
 [Cписок руководств | Печать]

accumulate (3)
  • >> accumulate (3) ( Solaris man: Библиотечные вызовы )
  • 
                           Standard C++ Library
                 Copyright 1998, Rogue Wave Software, Inc.
    
    
    NAME
         accumulate
    
          - Accumulates 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 per-
         forming  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 = binary_op(acc, *i) for every iterator i in
         the  range [first, last) in order. If the sequence is empty,
         accumulate returns init.
    
         binary_op should not have side effects.
    
    
    
    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>
         using namespace std;
    
         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;
          }
    
         Program 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  parame-
         ters,  then you always need to supply the Allocator template
         argument. For instance, you have to write:
    
    
         vector<int,allocator<int> >
    
         instead of:
    
    
         vector<int>
    
         If your compiler does not support namespaces,  then  you  do
         not need the using declaration for std.
    
    
    
    


    Поиск по тексту MAN-ов: 




    Партнёры:
    PostgresPro
    Inferno Solutions
    Hosting by Hoster.ru
    Хостинг:

    Закладки на сайте
    Проследить за страницей
    Created 1996-2024 by Maxim Chirkov
    Добавить, Поддержать, Вебмастеру