Biblioteca numérica de C ++ - suma_parcial
Descripción
Se utiliza para calcular sumas parciales de rango y asigna a cada elemento del rango a partir del resultado la suma parcial de los elementos correspondientes en el rango [primero, último].
Declaración
A continuación se muestra la declaración de std :: parcial_sum.
C ++ 98
template <class InputIterator, class OutputIterator>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op);
C ++ 11
template <class InputIterator, class OutputIterator>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result);
template <class InputIterator, class OutputIterator, class BinaryOperation>
OutputIterator partial_sum (InputIterator first, InputIterator last,
OutputIterator result, BinaryOperation binary_op);
first, last - Itera a las posiciones inicial y final de una secuencia.
init - Es un valor inicial para el acumulador.
binary_op - Es una operación binaria.
binary_op2 - Es operación binaria y toma dos elementos.
Valor devuelto
Devuelve un iterador que apunta al último elemento de la secuencia de destino donde se han almacenado los elementos resultantes, o el resultado si [primero, último) es un rango vacío.
Excepciones
Lanza si arroja alguna de las operaciones sobre los elementos o iteradores.
Carreras de datos
Se accede a los elementos del rango [primero1, último1).
Ejemplo
En el siguiente ejemplo para std :: parcial_sum.
#include <iostream>
#include <functional>
#include <numeric>
int myop (int x, int y) {return x+y+1;}
int main () {
int val[] = {10,20,30,40,50};
int result[5];
std::partial_sum (val, val+5, result);
std::cout << "Default partial_sum: ";
for (int i=0; i<5; i++) std::cout << result[i] << ' ';
std::cout << '\n';
std::partial_sum (val, val+5, result, std::multiplies<int>());
std::cout << "Functional operation multiplies: ";
for (int i=0; i<5; i++) std::cout << result[i] << ' ';
std::cout << '\n';
std::partial_sum (val, val+5, result, myop);
std::cout << "Custom function: ";
for (int i=0; i<5; i++) std::cout << result[i] << ' ';
std::cout << '\n';
return 0;
}
La salida debería ser así:
Default partial_sum: 10 30 60 100 150
Functional operation multiplies: 10 200 6000 240000 12000000
Custom function: 10 31 62 103 154