std::accumulate
es una función de la biblioteca estándar de C++ que permite sumar o acumular elementos de un rango en un contenedor (como un array, std::vector
, o cualquier otro contenedor iterable). Se encuentra definida en el encabezado <numeric>
y es muy útil para operaciones de reducción, como calcular la suma total de un conjunto de valores o realizar combinaciones personalizadas.
std::accumulate
?
std::accumulate
toma tres parámetros obligatorios:
1. Inicio del rango: Un iterador apuntando al primer elemento del rango.
2. Fin del rango: Un iterador apuntando al final del rango.
3. Valor inicial: El valor a partir del cual comienza la acumulación.
Además, se puede pasar un cuarto parámetro opcional: una función binaria que define cómo se deben acumular los elementos. Si no se especifica, la función realiza la suma de los elementos por defecto.
std::accumulate(inicio, fin, valor_inicial, operación);
std::accumulate
en C++
#include <iostream>
#include <vector>
#include <numeric> // Para std::accumulate
int main() {
std::vector<int> numeros = {1, 2, 3, 4, 5};
int suma = std::accumulate(numeros.begin(), numeros.end(), 0);
std::cout << "Suma total: " << suma << std::endl; // Output: 15
return 0;
}
std::accumulate
con una operación personalizada
Puedes usar std::accumulate
con una operación personalizada, como la multiplicación o concatenación de cadenas.
#include <iostream>
#include <vector>
#include <numeric> // Para std::accumulate
int main() {
std::vector<int> numeros = {1, 2, 3, 4, 5};
int producto = std::accumulate(numeros.begin(), numeros.end(), 1, std::multiplies<int>());
std::cout << "Producto total: " << producto << std::endl; // Output: 120
return 0;
}
std::accumulate
std::accumulate
también se puede usar con contenedores de cadenas para realizar concatenaciones.
#include <iostream>
#include <vector>
#include <numeric> // Para std::accumulate
#include <string>
int main() {
std::vector<std::string> palabras = {"Hola", " ", "mundo", "!"};
std::string frase = std::accumulate(palabras.begin(), palabras.end(), std::string(""));
std::cout << "Frase concatenada: " << frase << std::endl; // Output: Hola mundo!
return 0;
}
Para más detalles sobre std::accumulate
, puedes consultar la documentación oficial en cppreference.
Jorge García
Fullstack developer