Biblioteca de algoritmos
La biblioteca de algoritmos define funciones para una variedad de propósitos (por ejemplo, buscar, clasificar, contar, manipular) que operan en rangos de elementos. Observa que un rango se define como [first, last)
, donde last
se refiere al elemento después del último elemento a inspeccionar o modificar.
Políticas de ejecuciónLa mayoría de los algoritmos tienen sobrecargas que aceptan políticas de ejecución. Los algoritmos de la biblioteca estándar soportan varias políticas de ejecución, y la biblioteca proporciona los tipos y objetos de políticas de ejecución correspondientes. Los usuarios pueden seleccionar una política de ejecución de forma estática invocando un algoritmo paralelo con un objeto de política de ejecución del tipo correspondiente. Las implementaciones de bibliotecas estándar (pero no los usuarios) pueden definir políticas de ejecución adicionales como una extensión. La semántica de los algoritmos paralelos invocados con un objeto de política de ejecución de tipo definido por la implementación está definida por la implementación. Las versiones paralelas de los algoritmos (excepto para std::for_each y std::for_each_n) pueden realizar copias arbitrarias de elementos de rangos, siempre y cuando std::is_trivially_copy_constructible_v<T> y std::is_trivially_destructible_v<T> sean true, donde
| (desde C++17) |
Operaciones de secuencia no modificantes | |
Definido en el archivo de encabezado <algorithm> | |
(C++11)(C++11)(C++11) | Comprueba si un predicado es true para todos, alguno o ninguno de los elementos de un rango. (plantilla de función) |
(C++20)(C++20)(C++20) | Comprueba si un predicado es true para todos, alguno o ninguno de los elementos de un rango. (niebloid) |
Aplica una función a un rango de elementos. (plantilla de función) | |
(C++20) | Aplica una función a un rango de elementos. (niebloid) |
(C++17) | Aplica un objeto función a los primeros n elementos de una secuencia. (plantilla de función) |
(C++20) | Aplica un objeto función a los primeros n elementos de una secuencia. (niebloid) |
Devuelve el número de elementos que cumplan con un criterio específico. (plantilla de función) | |
(C++20)(C++20) | Devuelve el número de elementos que cumplan con un criterio específico. (niebloid) |
Encuentra la primera posición donde dos rangos difieren. (plantilla de función) | |
(C++20) | Encuentra la primera posición donde dos rangos difieren. (niebloid) |
(C++11) | Encuentra el primer elemento que satisfaga un criterio específico. (plantilla de función) |
(C++20)(C++20)(C++20) | Encuentra el primer elemento que satisfaga un criterio específico. (niebloid) |
(C++23)(C++23)(C++23) | Encuentra el último elemento que satisfaga un criterio específico. (niebloid) |
Encuentra la última secuencia de elementos en un cierto rango. (plantilla de función) | |
(C++20) | Encuentra la última secuencia de elementos en un cierto rango. (niebloid) |
Busca por cualquiera de un conjunto de elementos. (plantilla de función) | |
(C++20) | Busca por cualquiera de un conjunto de elementos. (niebloid) |
Encuentra dos elementos contiguos idénticos (o que satisfagan un predicado dado). (plantilla de función) | |
(C++20) | Encuentra dos primeros elementos contiguos idénticos (o que satisfagan un predicado dado). (niebloid) |
Busca una subsecuencia de elementos. (plantilla de función) | |
(C++20) | Busca una subsecuencia de elementos en un rango. (niebloid) |
Busca un número de copias consecutivas de un elemento en un rango. (plantilla de función) | |
(C++20) | Busca un número de copias consecutivas de un elemento en un rango. (niebloid) |
(C++23) | Verifica si un rango comienza con otro rango. (niebloid) |
(C++23) | Verifica si un rango termina con otro rango. (niebloid) |
Operaciones de secuencia modificantes | |
Definido en el archivo de encabezado <algorithm> | |
(C++11) | Copia un rango de elementos a una nueva ubicación. (plantilla de función) |
(C++20)(C++20) | Copia un rango de elementos a una nueva ubicación. (niebloid) |
(C++11) | Copia un número de elementos a una nueva ubicación. (plantilla de función) |
(C++20) | Copia un número de elementos a una nueva ubicación. (niebloid) |
Copia un rango de elementos en orden inverso. (plantilla de función) | |
(C++20) | Copia un rango de elementos en orden inverso. (niebloid) |
(C++11) | Mueve una serie de elementos a una nueva ubicación. (plantilla de función) |
(C++20) | Mueve un rango de elementos a una nueva ubicación. (niebloid) |
(C++11) | Mueve una serie de elementos a una nueva ubicación en orden inverso. (plantilla de función) |
(C++20) | Mueve un rango de elementos a una nueva ubicación en orden inverso. (niebloid) |
Asigna por copia el valor dado a todos los elementos de un rango. (plantilla de función) | |
(C++20) | Asigna un cierto valor a un rango de elementos. (niebloid) |
Asigna por copia el valor dado a todos los elementos de un rango. (plantilla de función) | |
(C++20) | Asigna un valor a un número de elementos. (niebloid) |
Aplica una función a un rango de elementos (plantilla de función) | |
(C++20) | Aplica una función a un rango de elementos. (niebloid) |
Asigna el resultado de las llamadas sucesivas de una función a todos los elementos de un rango. (plantilla de función) | |
(C++20) | Guarda el resultado de una función en un rango. (niebloid) |
Asigna el resultado de las llamadas sucesivas de una función a n elementos de un rango. (plantilla de función) | |
(C++20) | Guarda el resultado de N aplicaciones de una función. (niebloid) |
Elimina elementos que satisfacen un criterio específico. (plantilla de función) | |
(C++20)(C++20) | Elimina elementos que satisfacen un criterio específico. (niebloid) |
Copia un rango de elementos omitiendo los que satisfacen un criterio específico (plantilla de función) | |
(C++20)(C++20) | Copia un rango de elementos, omitiendo aquellos que satisfacen un criterio específico (niebloid) |
Reemplaza todos los valores que satisfacen criterios específicos con otro valor. (plantilla de función) | |
(C++20)(C++20) | Reemplaza todos los valores que satisfacen un criterio específico con otro valor. (niebloid) |
Copia un intervalo, en sustitución de elementos que cumplan criterios específicos con otro valor Original: copies a range, replacing elements satisfying specific criteria with another value The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
(C++20)(C++20) | Copia un rango, reemplazando los elementos que satisfacen un criterio específico con otro valor. (niebloid) |
Intercambia los valores de dos objetos (plantilla de función) | |
Intercambia dos rangos de elementos. (plantilla de función) | |
(C++20) | Intercambia dos rangos de elementos. (niebloid) |
Intercambia los elementos a los que apuntan dos iteradores (plantilla de función) | |
Invierte el orden de los elementos en un rango. (plantilla de función) | |
(C++20) | Invierte el orden de los elementos en un rango. (niebloid) |
Crea una copia de un rango que está invertida (plantilla de función) | |
(C++20) | Crea una copia de un rango que está invertido. (niebloid) |
Rota el orden de los elementos en un rango. (plantilla de función) | |
(C++20) | Rota el orden de los elementos en un rango. (niebloid) |
Copia y rota un rango de elementos. (plantilla de función) | |
(C++20) | Copia y rota un rango de elementos. (niebloid) |
(C++20) | Desplaza elementos en un rango (plantilla de función) |
(hasta C++17)(C++11) | Reordena aleatoriamente elementos en un rango. (plantilla de función) |
(C++20) | Reordena aleatoriamente los elementos en un rango. (niebloid) |
(C++17) | Selecciona N elementos aleatorios de una secuencia. (plantilla de función) |
(C++20) | Selecciona n elementos al azar de una secuencia. (niebloid) |
Elimina elementos duplicados consecutivos en un rango. (plantilla de función) | |
(C++20) | Elimina elementos duplicados consecutivos en un rango. (niebloid) |
Crea una copia de un rango de elementos que no contiene duplicados consecutivos. (plantilla de función) | |
(C++20) | Crea una copia de algún rango de elementos que no contiene duplicados consecutivos. (niebloid) |
Operaciones de partición | |
Definido en el archivo de encabezado <algorithm> | |
(C++11) | Determina si el rango está particionado por el predicado dado. (plantilla de función) |
(C++20) | Determina si el rango está dividido por el predicado dado. (niebloid) |
Divide un rango de elementos en dos grupos. (plantilla de función) | |
(C++20) | Divide un rango de elementos en dos grupos (niebloid) |
(C++11) | Copia un rango dividiendo los elementos en dos grupos. (plantilla de función) |
(C++20) | Copia un rango, dividiendo los elementos en dos grupos (niebloid) |
Divide elementos en dos grupos, conservando su orden relativo. (plantilla de función) | |
(C++20) | Divide elementos en dos grupos, conservando su orden relativo. (niebloid) |
(C++11) | Ubica el punto de partición de un rango particionado. (plantilla de función) |
(C++20) | Localiza el punto de partición de un rango particionado (niebloid) |
Operaciones de ordenamiento | |
Definido en el archivo de encabezado <algorithm> | |
(C++11) | Comprueba si un rango se clasifican en orden ascendente Original: checks whether a range is sorted into ascending order The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) |
(C++20) | Comprueba si un rango está ordenado en orden ascendente. (niebloid) |
(C++11) | Encuentra el subrango ordenado más grande. (plantilla de función) |
(C++20) | Encuentra el mayor subrango ordenado. (niebloid) |
Ordena un intervalo en orden ascendente Original: sorts a range into ascending order The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
(C++20) | Ordena un rango en orden ascendente. (niebloid) |
ordena los primeros n elementos de un rango Original: sorts the first N elements of a range The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
(C++20) | Ordena los primeros N elementos de un rango (niebloid) |
Copia y ordena parcialmente un rango de elementos. (plantilla de función) | |
(C++20) | Copia y ordena parcialmente un rango de elementos (niebloid) |
Ordena un intervalo de elementos, mientras que la preservación del orden entre los elementos iguales Original: sorts a range of elements while preserving order between equal elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
(C++20) | Ordena un rango de elementos conservando el orden entre elementos que son iguales. (niebloid) |
Ordena parcialmente el rango dado asegurándose de que esté particionado por el elemento dado. (plantilla de función) | |
(C++20) | Ordena parcialmente el rango dado asegurándose de que esté particionado por el elemento dado (niebloid) |
Operaciones de búsqueda binaria (en rangos ordenados) | |
Definido en el archivo de encabezado <algorithm> | |
Devuelve un iterador al primer elemento no menor que el valor dado. (plantilla de función) | |
(C++20) | Devuelve un iterador al primer elemento no menor que el valor dado. (niebloid) |
Devuelve un iterador al primer elemento mayor que un valor determinado. (plantilla de función) | |
(C++20) | Devuelve un iterador al primer elemento mayor que un cierto valor. (niebloid) |
Determina si un elemento existe en un rango parcialmente ordenado. (plantilla de función) | |
(C++20) | Determina si un elemento existe en un cierto rango. (niebloid) |
Devuelve el rango de los elementos que coinciden con una clave específica. (plantilla de función) | |
(C++20) | Devuelve un rango de elementos que coinciden con una clave especifica. (niebloid) |
Otras operaciones en rangos ordenados | |
Definido en el archivo de encabezado <algorithm> | |
Fusiona dos rangos ordenados. (plantilla de función) | |
(C++20) | Fusiona dos rangos ordenados (niebloid) |
Fusiona dos rangos ordenados in situ. (plantilla de función) | |
(C++20) | Fusiona dos rangos ordenados in situ. (niebloid) |
Operaciones de conjuntos (en rangos ordenados) | |
Definido en el archivo de encabezado <algorithm> | |
Devuelve true si una secuencia es una subsecuencia de otra. (plantilla de función) | |
(C++20) | Devuelve true si una secuencia es una subsecuencia de otra. (niebloid) |
Calcula la diferencia entre dos conjuntos. (plantilla de función) | |
(C++20) | Calcula la diferencia entre dos conjuntos. (niebloid) |
Calcula la intersección de dos conjuntos. (plantilla de función) | |
(C++20) | Calcula la intersección de dos conjuntos. (niebloid) |
Calcula la diferencia simétrica entre dos conjuntos. (plantilla de función) | |
Calcula la diferencia simétrica entre dos conjuntos. (niebloid) | |
Calcula la unión de dos conjuntos. (plantilla de función) | |
(C++20) | Calcula la unión de dos conjuntos. (niebloid) |
Operaciones de montículo/montón | |
Definido en el archivo de encabezado <algorithm> | |
(C++11) | Verifica si el rango dado es un montículo de máximos. (plantilla de función) |
(C++20) | Comprueba si el rango dado es un montículo de máximos. (niebloid) |
(C++11) | Encuentra el subrango más grande que es un montículo de máximos. (plantilla de función) |
(C++20) | Encuentra el mayor subrango que es un montículo de máximos. (niebloid) |
Crea un montículo de máximos a partir de un rango de elementos. (plantilla de función) | |
(C++20) | Crea un montículo de máximos a partir de un rango de elementos. (niebloid) |
Agrega un elemento a un montículo de máximos. (plantilla de función) | |
(C++20) | Agrega un elemento a un montículo de máximos (niebloid) |
Elimina el elemento más grande de un montículo de máximos. (plantilla de función) | |
(C++20) | Elimina el elemento más grande de un montículo de máximos (niebloid) |
Resulta un montón en una gama de elementos ordenados Original: turns a heap into a sorted range of elements The text has been machine-translated via Google Translate. You can help to correct and verify the translation. Click here for instructions. (plantilla de función) | |
(C++20) | Convierte un montículo de máximos en un rango de elementos ordenado de manera ascendente. (niebloid) |
Operaciones de mínimo/máximo | |
Definido en el archivo de encabezado <algorithm> | |
Devuelve el mayor de dos elementos (plantilla de función) | |
(C++20) | Devuelve el mayor de los valores dados (niebloid) |
Devuelve el elemento más grande en un rango. (plantilla de función) | |
(C++20) | Devuelve el elemento más grande en un rango (niebloid) |
Devuelve el menor de los elementos (plantilla de función) | |
(C++20) | Devuelve el menor de los valores dados (niebloid) |
Devuelve el elemento más pequeño de un rango. (plantilla de función) | |
(C++20) | Devuelve el elemento menor en un rango (niebloid) |
(C++11) | Devuelve el menor y el mayor de dos elementos. (plantilla de función) |
(C++20) | Devuelve el menor y mayor de dos elementos (niebloid) |
(C++11) | Devuelve el elemento más pequeño y el más grande de un rango. (plantilla de función) |
(C++20) | Devuelve los elementos menor y mayor en un rango (niebloid) |
(C++17) | Restringe un valor entre un par de valores limitantes (plantilla de función) |
(C++20) | Sujeta un valor entre un par de valores límite. (niebloid) |
Operaciones de comparación | |
Definido en el archivo de encabezado <algorithm> | |
Determina si dos conjuntos de elementos son iguales. (plantilla de función) | |
(C++20) | Determina si dos conjuntos de elementos son iguales. (niebloid) |
Devuelve true si un rango es lexicográficamente menor que otro. (plantilla de función) | |
Devuelve true si un rango es lexicográficamente menor que otro. (niebloid) | |
Compara dos rangos utilizando la comparación de tres vías (plantilla de función) | |
Operaciones de permutación | |
Definido en el archivo de encabezado <algorithm> | |
(C++11) | Determina si una secuencia es una permutación de otra secuencia. (plantilla de función) |
(C++20) | Determina si una secuencia es una permutación de otra secuencia. (niebloid) |
Genera la siguiente permutación lexicográfica mayor de un rango de elementos. (plantilla de función) | |
(C++20) | Genera la siguiente permutación lexicográfica mayor de un rango de elementos. (niebloid) |
genera la siguiente permutación lexicográfica menor de un rango de elementos. (plantilla de función) | |
(C++20) | Genera la siguiente permutación lexicográfica más pequeña de un rango de elementos (niebloid) |
Operaciones numéricas | |
Definido en el archivo de encabezado <numeric> | |
(C++11) | Llena un rango con incrementos sucesivos del mismo valor de partida (plantilla de función) |
Suma un rango de elementos (plantilla de función) | |
Calcula el producto interno de dos rangos de elementos (plantilla de función) | |
Calcula las diferencias entre elementos adyacentes en un rango (plantilla de función) | |
Calcula la suma parcial de un rango de elementos (plantilla de función) | |
(C++17) | Similar a std::accumulate, excepto que fuera de orden (plantilla de función) |
(C++17) | Similar a std::partial_sum, excluye el i-ésimo elemento de entrada de la i-ésima suma (plantilla de función) |
(C++17) | Similar a std::partial_sum, incluye el i-ésimo elemento de entrada de la i-ésima suma (plantilla de función) |
(C++17) | Aplica un invocable, luego reduce fuera de orden (plantilla de función) |
(C++17) | Aplica un invocable, luego calcula la suma de prefijo (o suma acumulativa) exclusiva (plantilla de función) |
(C++17) | Aplica un invocable, luego calcula la suma de prefijo (o suma acumulativa) inclusiva (plantilla de función) |
Operaciones en memoria sin inicializar |
Definido en el archivo de encabezado <memory> | |
Copia un rango de objetos a una zona de memoria sin inicializar. (plantilla de función) | |
(C++20) | Copia un rango de objetos a un área de memoria sin inicializar. (niebloid) |
(C++11) | Copia un número de objetos a un área de memoria sin inicializar. (plantilla de función) |
(C++20) | Copia un número de objetos a un área de memoria sin inicializar. (niebloid) |
Copia un objeto a una zona de memoria sin inicializar, definido por un rango. (plantilla de función) | |
(C++20) | Copia un objeto en un área de memoria sin inicializar, definido por un rango. (niebloid) |
Copia un objeto a una zona de memoria sin inicializar, definido por un inicio y una cuenta. (plantilla de función) | |
(C++20) | Copia un objeto a un área de memoria sin inicializar, definido por un inicio y una cuenta. (niebloid) |
(C++17) | Mueve un rango de objetos a un área de memoria sin inicializar. (niebloid) |
(C++20) | Mueve un rango de objetos a un área de memoria sin inicializar. (niebloid) |
(C++17) | Mueve un número de objetos a un área de memoria sin inicializar. (niebloid) |
(C++20) | Mueve un número de objetos a un área de memoria sin inicializar. (niebloid) |
Construye objetos mediante la inicialización por defecto en un área de memoria sin inicializar, definido por un rango. (plantilla de función) | |
Construye objetos mediante la inicialización por defecto en un área de memoria sin inicializar, definido por un rango. | |
Construye objetos mediante la inicialización por defecto en un área de memoria sin inicializar, definido por un inicio y una cuenta. (plantilla de función) | |
(niebloid) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un rango. (niebloid) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un rango. (niebloid) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un inicio y una cuenta. (niebloid) | |
Construye objetos mediante la inicialización de un valor en un área de memoria sin inicializar, definido por un inicio y una cuenta. (niebloid) | |
(C++17) | Destruye un rango de objetos. (plantilla de función) |
(C++20) | Destruye un rango de objetos. (niebloid) |
(C++17) | Destruye un número de objetos en un rango. (plantilla de función) |
(C++20) | Destruye un número de objetos en un rango. (niebloid) |
(C++17) | Destruye un objeto en una dirección dada. (plantilla de función) |
(C++20) | Destruye un objeto en una dirección dada. (niebloid) |
(C++20) | Crea un objeto en una dirección dada (plantilla de función) |
(C++20) | Crea un objeto en una dirección dada (niebloid) |
Biblioteca de C | |
Definido en el archivo de encabezado <cstdlib> | |
Ordena un intervalo de elementos con tipo no especificado. (función) | |
Busca en un array por un elemento de tipo no especificado. (función) |
[editar]Véase también
Documentación de C para Algoritmos |