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