Biblioteca Numérica C ++ - adjacente_differência

Descrição

Ele calcula a diferença adjacente de alcance.

Declaração

A seguir está a declaração para std :: adjac_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 - Iteradores para as posições inicial e final em uma sequência.

  • init - É um valor inicial para o acumulador.

  • binary_op - É uma operação binária.

Valor de retorno

Ele retorna um iterador apontando para além do último elemento da seqüência de destino onde os elementos resultantes foram armazenados.

Exceções

Ele lança se algum de binary_op, as atribuições ou uma operação em um iterador lançar.

Corridas de dados

Os elementos no intervalo [primeiro1, último1) são acessados.

Exemplo

No exemplo a seguir para std :: Below_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;
}

A saída deve ser assim -

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