Espacios de nombres
Variantes
Acciones

C++ Algoritmos

De cppreference.com
< cpp

Las cabeceras <algorithm> y <numeric> definen algoritmos o funciones generalizadas (templatizadas) que sirven como utilidades generales. Están definidas dentro del espacio de nombres std.


accumulate suma (acumula) un valor sobre un rango de elementos
adjacent_difference calcula las diferencias entre elementos adyacentes sobre un rango
adjacent_find encuentra dos elementos idénticos adyacentes en un rango
binary_search determina si un elemento existe en un rango ordenado
copy copia elementos de un rango hacia un un destino
copy_backward como copy, pero copia en orden inverso
count cuenta cuántos elementos en un rango son iguales a un cierto valor
count_if cuenta cuántos elementos en un rango cumplen una condición
equal determina si dos conjunsot son iguales
equal_range busca un rango de elementos en que todos sean iguales a un cierto valor
fill asigna un valor específico a todos los elementos de un rango
fill_n asigna un valor específico a los primeros n elementos de un rango
find encuentra un valor específico en un rango
find_end encuentra la última secuencia de elementos en un rango
find_first_of encuentra cualquiera de los valores deseados en un cierto rango
find_if encuentra un valor específico que cumpla una cierta condición en un rango
for_each aplica una función a un rango de elementos
generate salva los resultados de una función en un rango
generate_n salva los resultados de n invocaciones a una función en un rango
includes determina si un rango contiene (tiene como subconjunto) a otro
inner_product | calcula el [[cpp/algorithm/wp>es:producto interno | wp>es:producto interno]] de los elementos en dos rangos
inplace_merge une dos subrangos contiguos de manera ordenada
is_heap determina si un conjunto es un montículo
iter_swap intercambia los elementos apuntados por dos iteradores
lexicographical_compare retorna verdadero si un rango es "menor" que el otro alfabéticamente
lower_bound busca el primer lugar en un rango ordenado donde se puede insertar un elemento específico
make_heap convierte un rango en un montículo
max, min devuelve el máximo/mínimo entre dos elementos
max_element, min_element devuelve el elemento máximo/mínimo en un rango
merge funde dos rangos ordenados
mismatch encuentra el lugar donde dos rangos difieren
next_permutation reordena un rango a su próxima permutación lexicográfica
nth_element coloca un elemento ordenado convirtiéndolo en pivote de un rango
partial_sort ordena los primeros n elementos de un rango
partial_sort_copy copia y ordena parcialmente un rango de elementos
partial_sum calcula las sumas parciales dentro de un conjunto de elementos
partition divide un rango en dos subconjuntos
pop_heap remueve el tope de un montículo
prev_permutation reordena un rango a su anterior permutación lexicográfica
push_heap agrega un elemento a un montículo
random_shuffle reordena un rango de manera aleatoria
remove "remueve"((ver erase)) elementos iguales a un cierto valor de un rango
remove_copy copia elementos de un rango a otro, omitiendo aquellos que son iguales a un cierto valor
remove_copy_if copia elementos de un rango a otro, omitiendo aquellos que cumplen un cierto predicado
remove_if "remueve"((ver erase)) elementos de un rango que cumplan un cierto predicado
replace reemplaza un valor por otro entre los elementos de un rango
replace_copy copia elementos de un rango a otro, reemplazando elementos iguales a un cierto valor
replace_copy_if copia elementos de un rango a otro, reemplazando elementos que cumplan un cierto predicado
replace_if reemplaza los valores en un rango que cumplan con cierto predicado
reverse invierte el orden en un rango
reverse_copy crea una copia normal de un rango recorrido en orden inverso
rotate rota un rango a la izquierda por una cierta cantidad de posiciones
rotate_copy copia y rota al mismo tiempo un rango de elementos
search busca un rango de elementos
search_n busca n copias consecutivas de un elemento en un rango
set_difference crea la diferencia entre dos conjuntos
set_intersection crea la intersección entre dos conjuntos
set_symmetric_difference crea la diferencia simétrica entre dos conjuntos
set_union crea la unión entre dos rangos
sort ordena un rango
sort_heap convierte un montículo en un rango ordenado
stable_partition divide un rango en dos partes, preservando el orden relativo entre sus elementos
stable_sort ordena un rango, preservando el orden relativo de elementos equivalentes
swap intercambia valores
swap_ranges intercambia rangos
transform transforma un rango de elementos por medio de una función
unique "remueve"((ver erase)) duplicados consecutivos en un rango
unique_copy crea una copia de un rango omitiendo los duplicados consecutivos
upper_bound busca el último lugar en un rango ordenado donde se puede insertar un elemento específico

Implementadores o proveedores de compiladores son libres de ofrecer algunos otros algoritmos en la forma de extensiones, por ejemplo uno de los más conocidos originados en la versión de STL de SGI es copy_n.

Así mismo, el próximo estándar de C++, C++11 incorporará algunos nuevos algoritmos como minmax (cálculo simultáneo del mínimo y máximo de un rango).