Compartilhar via


partial_sum

Calcula uma série de soma em um intervalo de entrada do primeiro elemento através do elemento de ithe armazena o resultado de cada tal soma no elemento de ithde um intervalo de destino ou calcula o resultado de um procedimento generalizado onde a operação de soma é substituída por outra operação binário especificada.

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
   );

Parâmetros

  • _First
    Um iterador de entrada que trata o primeiro elemento no intervalo parcialmente ou somado a ser combinado de acordo com uma operação binário especificada.

  • _Last
    Um iterador de entrada que trata o último elemento no intervalo parcialmente ou somado a ser combinado de acordo com uma operação binário especificada que é uma posição além do elemento final incluiu na verdade acúmulo iterada.

  • _Result
    Um iterador de saída que trata o primeiro elemento um intervalo de destino onde a série de soma parcial ou de resultados da operação especificada deve ser armazenada.

  • _Binary_op
    A operação binário que deve ser aplicada a operação generalizada que substitui a operação de soma no procedimento de soma parcial.

Valor de retorno

Um iterador de saída que trata o final do intervalo de destino: _Result + (_Last - _First),

Comentários

O iterador _Result de saída é permitido iterador ser o mesmo que o iterador _Firstde entrada, para que as somas parciais podem ser computadas no lugar.

Para uma seqüência de valores a1, a2, a3, em um intervalo de entrada, as somas parciais sucessivas do primeiro armazenamentos de função do modelo no destino varia, onde o i-ésimo elemento é determinado por ( ( (a1 + a2) + a3) ai).

Para uma seqüência de valores a1, a2, a3, em um intervalo de entrada, as somas parciais sucessivas de segundos armazenamentos de função do modelo no destino varia, onde o i-ésimo elemento é determinado por ( ( ( a1_Binary_opa2 ) _Binary_opa3 ) ai).

A operação binário _Binary_op não é necessária ser ou associativa ou comutativo, porque a ordem das operações se aplica é especificado pelo.

partial_sum tem dois formulários relacionados:

Se você passar um iterador verificado para um dos formulários de partial_sum, você obtém o comportamento de iterador verificado.  Se você passar um iterador não-verificada, você obtém o comportamento não-verificada.Para mais informações, consulte Iteradores selecionados.

Exemplo

// 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;
}

Saída

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 ).

Requisitos

Cabeçalho: <numeric>

namespace: STD

Consulte também

Referência

partial_sum (STL Samples)

Standard Template Library