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).