次の方法で共有


partial_sum

入力計算の一連の合計は最初の要素から ith の要素を受け取り、移動先の範囲または計算の ith の要素の、このような合計結果の合計操作が指定した別の 2 進操作と置換される汎用的なプロシージャの結果になります。

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
    部分的に指定 2 進操作に従って合計されるか、または結合された範囲内の先頭の要素を示す入力反復子。

  • _Last
    部分的に最後の要素を 1 個以上の位置にある、指定した 2 進操作に従って合計されるか、または結合された範囲内の最後の要素を示す入力反復子は、反復された累積に実際に含まれています。

  • _Result
    最初の要素に一連の指定した操作の部分の合計または結果が格納先の範囲を示す出力反復子。

  • _Binary_op
    和部分の手順の合計の汎用的な操作と置換操作で適用される 2 進操作。

戻り値

先の範囲の末尾を示す出力反復子: _Result + (_Last -_First),

解説

部分の合計を計算するように出力反復子 _Result が入力反復子 _Firstと同じ反復子である。

の値 は、シーケンスの1場合、ith の要素がで指定された場所で2、3、入力範囲で、移動先の一つ目のテンプレート関数ストアの連続する範囲 (部分の合計 (+ ) + (12、) 3は ) Iです。

の値 は、シーケンスの1場合、ith の要素がで指定された場所で2、3、入力範囲で、移動先の 2 番目のテンプレート関数のストアの連続する範囲 (部分の合計 ( () 3*)、1_Binary_opは*2 ) _Binary_opI。

操作の順序が適用されるため、2 進 _Binary_op 結合操作はである必要はありませんまたは可換性、完全に指定されます。

partial_sum 2 に関連する二つの形式があります:

partial_sumフォームの 1 にチェックを行う反復子を渡すと、反復子の動作がチェックされます。  unchecked 反復子を渡すと、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;
}

出力

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)

標準テンプレート ライブラリ