adjacent_difference
Calcola le differenze tra successive ogni elemento e il relativo predecessore in un intervallo di input e restituisce i risultati in un intervallo di destinazione o calcola il risultato di una routine generalizzata in cui l'operazione di differenza è sostituito da un altro, un'operazione binaria specificata.
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
);
Parametri
_First
Un iteratore di input destinato al primo elemento nell'intervallo di input dei cui elementi devono essere differenced con i rispettivi predecessori o in cui la coppia di valori deve può essere utilizzato in da un'altra operazione binaria specificata._Last
Un iteratore di input destinato all'ultimo elemento nell'intervallo di input dei cui elementi devono essere differenced con i rispettivi predecessori o in cui la coppia di valori deve può essere utilizzato in da un'altra operazione binaria specificata._Result
Un iteratore di output destinato al primo elemento di un intervallo di destinazione in cui la serie di differenze 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 di sottrazione nella differenziazione.
Valore restituito
Un iteratore di output destinato alla fine dell'intervallo di destinazione: _Result + (_Last - _First).
Note
Il _Result di output di iteratore è consentito lo stesso iteratore di _First di input di iteratore , in modo che adjacent_differenceoggetti è possibile calcolare sul posto.
Per una sequenza di valori a1, a2, a3, in un intervallo di input, la prima funzione di modello archivia partial_differencesuccessivo s a1, a2- a1, a3 – a2, nell'intervallo di destinazione.
Per una sequenza di valori a1, a2, a3, in un intervallo di input, la seconda funzione di modello archivia partial_differencesuccessivo s a1, a2_Binary_opa1, a3_Binary_opa2, nell'intervallo di destinazione.
Un'operazione binaria _Binary_op non deve essere o associativa o commutativo, perché l'ordine delle operazioni è applicato è completamente specificato.
adjacent_difference dispone di due form correlati:
Se si passa un iteratore verificato a uno dei form adjacent_difference, 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_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;
}
Output
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 ).
Requisiti
intestazione: <numeric>
Spazio dei nomi: deviazione standard