Поделиться через


partial_sum

Вычисляет ряд сумм в диапазоне из первого элемента с помощью элемента ith и сохраняет результат каждой такой суммы в элементе ith диапазона назначения или вычисляет результат обобщенной процедуры, где операция суммы заменена другой указанной бинарной операцией.

template<class InputIterator, class OutIt>
   OutputIterator partial_sum(
      InputIterator _First, 
      InputIterator _Last,
      OutputIterator _Result
   );

template<class InputIterator, class OutIt, class Fn2>
   OutputIterator partial_sum(
      InputIterator _First, 
      InputIterator _Last,
      OutputIterator _Result, 
      BinaryOperation _Binary_op
   );

Параметры

  • _First
    Итератор ввода адресацию первого элемента в диапазоне от частично для суммирования или в сочетании бинарной в соответствии с указанной операции.

  • _Last
    Итератор ввода адресацию последний элемент в диапазоне от частично для суммирования или в сочетании в соответствии с указанной бинарной операции, одна позиция за элементом, включенные в повторенном final фактически накоплении.

  • _Result
    Итератор вывода адресацию первому элементу диапазон назначения, где ряд частично сумм или результатов операции хранения.

  • _Binary_op
    Бинарная операция, применяемых в операции обобщенной заменить операция суммы в процедуре частично суммы.

Возвращаемое значение

Итератор вывода адресацию конец диапазона назначения. _Result + (_Last - _First),

Заметки

Итератор _Result вывода может быть таким же, как _First итератором итератор ввода, чтобы частично суммы будут быть вычислены на месте.

Для последовательности значений a1, а2, а3 в диапазоне ввода, суммы первых магазинов функции шаблона последовательные частично назначения в диапазоне, где элемент ith задается a1 + ((( a2) + a3) ai).

Для последовательности значений a1, а2, а3 в диапазоне ввода второго магазинов, суммы функции шаблона последовательные частично назначения в диапазоне, где элемент ith предоставляется (((1_Binary_opa2 ) _Binary_opa3 ) ai).

Бинарная операция _Binary_op не требуется или ассоциативна или коммутативна, поскольку порядок операций применяется полностью определена.

partial_sum имеет значение 2, связанных форм:

При передаче проверяемый итератор к одной из форм partial_sum, возвращается проверенную расширения функциональности итератора. При передаче unchecked итератор, возвращается непроверенную расширений функциональности.Дополнительные сведения см. в разделе Проверяемые итераторы.

Пример

// numeric_partial_sum.cpp
// compile with: /EHsc
#include <vector>
#include <list>
#include <numeric>
#include <functional>
#include <iostream>

int main( ) 
{
   using namespace std;   
   vector<int> V1( 10 ), V2( 10 );
   vector<int>::iterator VIter1, VIter2, VIterend, VIterend2;

   list <int> L1;
   list <int>::iterator LIter1, LIterend;

   int t;
   for ( t = 1 ; t <= 10 ; t++ )
   {
      L1.push_back( t );
   }

   cout << "The input list L1 is:\n ( " ;
   for ( LIter1 = L1.begin( ) ; LIter1 != L1.end( ) ; LIter1++ )
      cout << *LIter1 << " ";
   cout << ")." << endl;

   // The first member function for the partial sums of
   // elements in a list output to a vector
   VIterend = partial_sum ( L1.begin ( ) , L1.end ( ) , 
      V1.begin ( ) );
   
   cout << "The output vector containing the partial sums is:\n ( " ;
   for ( VIter1 = V1.begin( ) ; VIter1 != VIterend ; VIter1++ )
      cout << *VIter1 << " ";
   cout << ")." << endl;

   // The second member function used to compute
   // the partial product of the elements in a list
   VIterend2 = partial_sum ( L1.begin ( ) , L1.end ( ) , V2.begin ( ) , 
      multiplies<int>( ) );
   
   cout << "The output vector with the partial products is:\n ( " ;
   for ( VIter2 = V2.begin( ) ; VIter2 != VIterend2 ; VIter2++ )
      cout << *VIter2 << " ";
   cout << ")." << endl;

   // Computation of partial sums in place
   LIterend = partial_sum ( L1.begin ( ) , L1.end ( ) , L1.begin ( ) );
   cout << "The in place output partial_sum list L1 is:\n ( " ;
   for ( LIter1 = L1.begin( ) ; LIter1 != LIterend ; LIter1++ )
      cout << *LIter1 << " ";
   cout << ")." << endl;
}

Output

The input list L1 is:
 ( 1 2 3 4 5 6 7 8 9 10 ).
The output vector containing the partial sums is:
 ( 1 3 6 10 15 21 28 36 45 55 ).
The output vector with the partial products is:
 ( 1 2 6 24 120 720 5040 40320 362880 3628800 ).
The in place output partial_sum list L1 is:
 ( 1 3 6 10 15 21 28 36 45 55 ).

Требования

заголовок: <numeric>

std пространство имен:

См. также

Ссылки

partial_sum (STL Samples)

Стандартная библиотека шаблонов