adjacent_difference
Calcule les différences consécutives entre chaque élément et son prédécesseur dans une plage d'entrée et affiche les résultats dans une plage de destination ou calcule le résultat d'une procédure généralisée où l'exécution de différence est remplacée par une autre, opération binaire spécifiée.
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
);
Paramètres
_First
Un itérateur d'entrée adressant le premier élément de la plage d'entrée dont les éléments doivent differenced avec leurs prédécesseurs respectifs ou où les paires de valeurs doit être opéré sur par une autre opération binaire spécifiée._Last
Un itérateur d'entrée adressant le dernier élément de la plage d'entrée dont les éléments doivent differenced avec leurs prédécesseurs respectifs ou où les paires de valeurs doit être opéré sur par une autre opération binaire spécifiée._Result
Un itérateur de sortie adressant au premier élément une plage de destination où la série de différences ou les résultats de l'exécution spécifiée doit être stockée._Binary_op
L'opération binaire qui doit être appliquée de l'exécution généralisée remplaçant l'exécution de la soustraction dans la procédure de différenciation.
Valeur de retour
Un itérateur de sortie adressant la fin de la plage de destination : _Result + (_Last - _First).
Notes
Il permet le itérateur de sortie _Result pour être le même itérateur que le itérateur d'entrée _First , afin qu' adjacent_differences puisse être calculé en place.
Pour une séquence de valeurs a1, a2, a3, dans une plage d'entrée, la première fonction de modèle stocke partial_differenceconsécutif s a1, a2( a1, a3 – a2, dans la plage de destination.
Pour une séquence de valeurs a1, a2, a3, dans une plage d'entrée, la deuxième fonction de modèle stocke partial_differenceconsécutif s a1, a2_Binary_opa1, a3_Binary_opa2, dans la plage de destination.
L'opération binaire _Binary_op n'est pas nécessaire pour être ou associative ou commutatif, parce que l'ordre des opérations s'applique est complètement spécifié.
adjacent_difference a deux formes associées :
Si vous passez un itérateur vérifié l'une des formes d' adjacent_difference, vous obtenez le comportement d'itérateur vérifié. Si vous passez un itérateur non réprimé, vous obtenez un comportement non réprimé.Pour plus d'informations, consultez Itérateurs vérifiés.
Exemple
// 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;
}
Sortie
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 ).
Configuration requise
en-tête : <numeric>
l'espace de noms : DST