次の方法で共有


adjacent_difference

入力範囲内の各要素と元の継続的な相違点を計算し、描画先の範囲に結果を出力するか、相違点の操作が別ので置換される汎用的なプロシージャ、2 進指定操作の結果を計算します。

template<class InputIterator, class OutIterator>
   OutputIterator adjacent_difference(
      InputIterator _First, 
      InputIterator _Last,
      OutputIterator _Result 
   );

template<class InputIterator, class OutIterator, class BinaryOperation>
   OutputIterator adjacent_difference(
      InputIterator _First, 
      InputIterator _Last,
      OutputIterator _Result, 
      BinaryOperation _Binary_op
   );

パラメーター

  • _First
    最初の要素を要素がそれぞれの先行処理と differenced またはの示す入力反復子は、値のペアで指定した別の 2 進操作で処理する必要がある入力範囲。

  • _Last
    最後の要素を要素がそれぞれの先行処理と differenced またはの示す入力反復子は、値のペアで指定した別の 2 進操作で処理する必要がある入力範囲。

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

  • _Binary_op
    差分プロシージャの減算演算を置き換える汎用的な操作に適用される 2 進操作。

戻り値

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

解説

adjacent_differences を計算できるように出力反復子の _Result が入力反復子の _First と同じ反復子である。

a1値のシーケンスの場合、a2a3 は、入力範囲の最初の関数テンプレートの連続する partial_differencea1a2- a1、描画先の範囲の a3 – a2) を格納します。

a1値のシーケンスの場合、a2a3、入力範囲で、2 番目のテンプレート関数のストア連続する partial_differencea1a2_Binary_opa1、描画先の範囲の a3_Binary_opa2

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

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

adjacent_differenceフォームの 1 にチェックを行う反復子を渡すと、反復子の動作がチェックされます。  unchecked 反復子を渡すと、unchecked 動作を取得します。詳細については、「チェックを行う反復子」を参照してください。

使用例

// numeric_adj_diff.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, LIterend2;

   int t;
   for ( t = 1 ; t <= 10 ; t++ )
   {
      L1.push_back( t * 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 adjacent_differences of
   // elements in a list output to a vector
   VIterend = adjacent_difference ( L1.begin ( ) , L1.end ( ) , 
      V1.begin ( ) );
   
   cout << "Output vector containing adjacent_differences is:\n ( " ;
   for ( VIter1 = V1.begin( ) ; VIter1 != VIterend ; VIter1++ )
      cout << *VIter1 << " ";
   cout << ")." << endl;

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

   // Computation of adjacent_differences in place
   LIterend2 = adjacent_difference ( L1.begin ( ) , L1.end ( ) , L1.begin ( ) );
   cout << "In place output adjacent_differences in list L1 is:\n ( " ;
   for ( LIter1 = L1.begin( ) ; LIter1 != LIterend2 ; LIter1++ )
      cout << *LIter1 << " ";
   cout << ")." << endl;
}

出力

The input list L1 is:
 ( 1 4 9 16 25 36 49 64 81 100 ).
Output vector containing adjacent_differences is:
 ( 1 3 5 7 9 11 13 15 17 19 ).
The output vector with the adjacent products is:
 ( 1 4 36 144 400 900 1764 3136 5184 8100 ).
In place output adjacent_differences in list L1 is:
 ( 1 3 5 7 9 11 13 15 17 19 ).

必要条件

ヘッダー: <numeric>

名前空間: std

参照

関連項目

adjacent_difference と vector::push_back

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