Biblioteca numérica de C ++ - adyacente_difference
Descripción
Calcula la diferencia de rango adyacente.
Declaración
A continuación se muestra la declaración de std :: adyacente_difference.
C ++ 98
template <class InputIterator, class OutputIterator>
OutputIterator adjacent_difference (InputIterator first, InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator adjacent_difference ( InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op );
C ++ 11
template <class InputIterator, class OutputIterator>
OutputIterator adjacent_difference (InputIterator first, InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator adjacent_difference ( InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op );
first, last - Itera a las posiciones inicial y final en una secuencia.
init - Es un valor inicial para el acumulador.
binary_op - Es una operación binaria.
Valor devuelto
Devuelve un iterador que apunta al último elemento de la secuencia de destino donde se han almacenado los elementos resultantes.
Excepciones
Lanza si arroja alguno de binary_op, las asignaciones o una operación en un iterador.
Carreras de datos
Se accede a los elementos del rango [primero1, último1).
Ejemplo
En el siguiente ejemplo para std :: adyacente_difference.
#include <iostream>
#include <functional>
#include <numeric>
int myop (int x, int y) {return x+y;}
int main () {
int val[] = {10,20,30,50,60,70};
int result[7];
std::adjacent_difference (val, val+7, result);
std::cout << "Default adjacent_difference: ";
for (int i=0; i<7; i++) std::cout << result[i] << ' ';
std::cout << '\n';
std::adjacent_difference (val, val+7, result, std::multiplies<int>());
std::cout << "Functional operation multiplies: ";
for (int i=0; i<7; i++) std::cout << result[i] << ' ';
std::cout << '\n';
std::adjacent_difference (val, val+7, result, myop);
std::cout << "Custom function operation: ";
for (int i=0; i<7; i++) std::cout << result[i] << ' ';
std::cout << '\n';
return 0;
}
La salida debería ser así:
Default adjacent_difference: 10 10 10 20 10 10 4197079
Functional operation multiplies: 10 200 600 1500 3000 4200 293800430
Custom function operation: 10 30 50 80 110 130 4197219