partial_sum

Calcola una serie di somme in un intervallo di input dal primo elemento dall'elemento di ithe archivia il risultato di ciascuna sommaelemento del ithdi un intervallo di destinazione o calcola il risultato di una routine generalizzata in cui l'operazione della somma viene sostituita da un'altra operazione binaria specificata.

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

Parametri

  • _First
    Un iteratore di input destinato al primo elemento nell'intervallo parzialmente da sommare o combinare come un'operazione binaria specificata.

  • _Last
    Un iteratore di input destinato all'ultimo elemento nell'intervallo parzialmente da sommare o combinare come un'operazione binaria specificata è una posizione oltre l'elemento finale realtà incluso nella compilazione ripetuta.

  • _Result
    Un iteratore di output destinato al primo elemento di un intervallo di destinazione in cui la serie di somme parziali o i risultati dell'operazione specificata deve essere archiviata.

  • _Binary_op
    Un'operazione binaria che deve essere applicato nell'operazione generalizzata che sostituisce l'operazione della somma nella routine della somma parziale.

Valore restituito

Un iteratore di output destinato alla fine dell'intervallo di destinazione: _Result + (_Last - _First),

Note

Un iteratore di output _Result è consentito lo stesso iteratore di iteratore di input _First, in modo che le somme parziali possono essere calcolate sul posto.

Per una sequenza di valori oggetto1, un oggetto2, un oggetto,3in un intervallo di input, la prima funzione di modello archivia le somme parziali successive nell'intervallo di destinazione, in cui l'elemento ithviene fornito ((a1 (+) a2+ a3) dai).

Per una sequenza di valori oggetto1, un oggetto2, un oggetto,3in un intervallo di input, la seconda funzione di modello archivia le somme parziali successive nell'intervallo di destinazione, in cui l'elemento di ith viene fornito (((1_Binary_opa2 ) _Binary_opa3 ) dai).

Un'operazione binaria _Binary_op non deve essere o associativa o commutativo, perché l'ordine delle operazioni è applicato è completamente specificato.

partial_sum dispone di due form correlati:

Se si passa un iteratore verificato a uno dei form partial_sum, viene controllato il comportamento di iteratore.  Se si passa un iteratore deselezionato, si ottiene un comportamento non verificato.Per ulteriori informazioni, vedere Iteratori verificati.

Esempio

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

Requisiti

intestazione: <numeric>

Spazio dei nomi: deviazione standard

Vedere anche

Riferimenti

partial_sum (STL Samples)

Libreria di modelli standard