Freigeben über


partial_sum

Berechnet eine Reihe von Summen in einem Eingabebereich vom ersten Element durch das ith-Element und speichert das Ergebnis einer solchen Summe im ith-Element eines Zielbereichs oder berechnet das Ergebnis einer verallgemeinerten Prozedur, in der der Summenvorgang durch eine andere angegebene binäre Operation ersetzt wird.

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

Parameter

  • _First
    Ein Eingabeiterator, der das erste Element im entsprechend einer angegebenen binären Operation teilweise summiert werden oder kombiniert wurden, Bereich behandelt.

  • _Last
    Ein Eingabeiterator, der das letzte Element im entsprechend einer angegebenen binären Operation teilweise summiert werden oder kombiniert wurden Bereich, abweicht, die eine Position über dem letzten Element hinaus ist geschlossen hat, tatsächlich in der durchgelaufenen Ansammlung ein.

  • _Result
    Ein Ausgabeiterator, der dem ersten Element einen Zielbereich behandelt, in dem die Reihe von partiellen Summen oder der Ergebnisse des angegebenen Vorgangs gespeichert werden soll.

  • _Binary_op
    Die binäre Operation, die im generalisierten Vorgang angewendet werden soll, der den Vorgang der Summe in der Prozedur der partiellen Summe ersetzt.

Rückgabewert

Ein Ausgabeiterator, der das Ende des Zielbereichs behandelt: _Result + (_Last - _First),

Hinweise

Das Ausgabeiterator _Result wird ermöglicht, der gleiche wie der Iterator Eingabeiterator _First zu sein, sodass partielle Summen an der Stelle abgeleitet werden.

Eine Sequenz von Werten einen1, speichert ein2, eine3, in einem Eingabebereich, die erste Vorlagenfunktion aufeinander folgende Auszug Summen im Zielbereich, in dem das ith-Element von angegeben ist (((a1 + *A)*2+ *A)3ein)*I.

Eine Sequenz von Werten einen1, speichert ein2, eine3, in einem Eingabebereich, die zweite Vorlagenfunktion aufeinander folgende Auszug Summen im Zielbereich, in dem das ith Element von angegeben ist ((_Binary_op(1*A)2_Binary_opA)3ein)*I.

Die binäre Operation _Binary_op ist nicht erforderlich, vereinigend ist entweder, oder auswechselbar, da die Operationsreihenfolge gilt, wird vollständig angegeben.

partial_sum hat zwei verknüpfte Formulare:

Wenn Sie einen überprüfter Iterator auf eines der Formen von partial_sum übergeben, werden Sie Iteratorverhalten überprüft. Wenn Sie einen deaktivierten Iterator übergeben, rufen Sie deaktiviertes Verhalten ab.Weitere Informationen finden Sie unter Überprüfte Iteratoren.

Beispiel

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

Anforderungen

Header: <numeric>

Namespace: std

Siehe auch

Referenz

partial_sum (STL Samples)

Standardvorlagenbibliothek