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