acumular() y parcial_sum() en C++ STL: encabezado numérico – Part 1

El encabezado numérico es parte de la biblioteca numérica en C++ STL. Esta biblioteca consta de funciones y tipos matemáticos básicos, así como arrays numéricas optimizadas y soporte para la generación de números aleatorios. Algunas de las funciones en el encabezado numérico:

  • iota
  • acumular
  • reducir
  • producto Interno
  • suma_parcial, etc.

Este artículo explica las funciones de acumulación() y parcial_sum() en el encabezado numérico que se pueden usar durante la programación competitiva para ahorrar tiempo y esfuerzo. 

1) acumular(): esta función devuelve la suma de todos los valores que se encuentran en un rango entre [primero, último] con la variable suma. Por lo general, encontramos la suma de elementos en un rango particular o una array completa mediante una operación lineal que requiere agregar todos los elementos en el rango uno por uno y almacenarlos en alguna variable después de cada iteración.

Sintaxis:

accumulate(first, last, sum);

o

accumulate(first, last, sum, myfun); 

Parámetros:

  • primero, último: primeros y últimos elementos del rango cuyos elementos se agregarán
  • suma:  valor inicial de la suma
  • myfun: una función para realizar cualquier tarea específica. 

Por ejemplo, podemos encontrar el producto de los elementos entre el primero y el último.

CPP

// C++ program to demonstrate working of accumulate()
#include <iostream>
#include <numeric>
using namespace std;
 
// User defined function
int myfun(int x, int y)
{
    // for this example we have taken product
    // of adjacent numbers
    return x * y;
}
 
int main()
{
    // Initialize sum = 1
    int sum = 1;
    int a[] = { 5, 10, 15 };
 
    // Simple default accumulate function
    cout << "\nResult using accumulate: ";
    cout << accumulate(a, a + 3, sum);
 
    // Using accumulate function with
    // defined function
    cout << "\nResult using accumulate with"
            "user-defined function: ";
    cout << accumulate(a, a + 3, sum, myfun);
 
    // Using accumulate function with
    // pre-defined function
    cout << "\nResult using accumulate with "
            "pre-defined function: ";
    cout << accumulate(a, a + 3, sum, std::minus<int>());
 
    return 0;
}
Producción

Result using accumulate: 31
Result using accumulate withuser-defined function: 750
Result using accumulate with pre-defined function: -29

Consulte este problema de ejemplo para obtener más referencia: Suma de todos los elementos entre k1’th y k2’th elementos más pequeños

2) part_sum( ): Esta función asigna una suma parcial de los elementos correspondientes de una array a cada posición de la segunda array. Devuelve la suma parcial de todo el conjunto de valores que se encuentran entre [primero, último] y lo almacena en otra array b. 

Por ejemplo, si x representa un elemento en [primero, último] e y representa un elemento en el resultado, el ys se puede calcular como:

y0 = x0 
y1 = x0 + x1 
y2 = x0 + x1 + x2 
y3 = x0 + x1 + x2 + x3 
y4 = x0 + x1 + x2 + x3 + x4

Sintaxis:

partial_sum(first, last, b);

o

partial_sum(first, last, b, myfun);

Parámetros:

  • primero, último: primer y último elemento del rango cuyos elementos se agregarán
  • b: índice de la array donde se almacenará la suma parcial correspondiente
  • myfun: una función definida por el usuario para realizar cualquier tarea específica

CPP

// C++ program to demonstrate working of partial_sum()
#include <iostream>
#include <numeric>
using namespace std;
 
// user defined function
int myfun(int x, int y)
{
    // the sum of element is twice of its
    // adjacent element
    return x + 2 * y;
}
 
int main()
{
    int a[] = { 1, 2, 3, 4, 5 };
    int b[5];
 
    // Default function
    partial_sum(a, a + 5, b);
 
    cout << "Partial Sum - Using Default function: ";
    for (int i = 0; i < 5; i++)
        cout << b[i] << ' ';
    cout << '\n';
 
    // Using user defined function
    partial_sum(a, a + 5, b, myfun);
 
    cout << "Partial sum - Using user defined function: ";
    for (int i = 0; i < 5; i++)
        cout << b[i] << ' ';
    cout << '\n';
 
    return 0;
}
Producción

Partial Sum - Using Default function: 1 3 6 10 15 
Partial sum - Using user defined function: 1 5 11 19 29 

Este artículo es una contribución de Abhinav Tiwari . Si te gusta GeeksforGeeks y te gustaría contribuir, también puedes escribir un artículo usando write.geeksforgeeks.org o enviar tu artículo por correo a review-team@geeksforgeeks.org. Vea su artículo que aparece en la página principal de GeeksforGeeks y ayude a otros Geeks. Escriba comentarios si encuentra algo incorrecto o si desea compartir más información sobre el tema tratado anteriormente.

Publicación traducida automáticamente

Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *