<algorithm>
Define las funciones de plantilla contenedor de la Biblioteca de plantillas estándar (STL) que realizan algoritmos.
(see relevant links below for specific algorithm syntax)
Comentarios
Los algoritmos de STL son genéricos porque pueden funcionar en diversas estructuras de datos. Las estructuras de datos en las que se pueden usar incluyen no solo de las clases contenedoras de STL como vector y list, sino también estructuras de datos y matrices de elementos definidas por el programa que cumplen los requisitos de un algoritmo determinado. Para lograr este nivel de generalidad, los algoritmos de STL acceden a los elementos de un contenedor y los recorren indirectamente mediante iteradores.
Los algoritmos de STL procesan los intervalos de iteradores que se suelen especificar por sus posiciones inicial o final. Los intervalos a los que se hace referencia deben ser válidos en el sentido de que todos los punteros de los intervalos se deben poder desreferenciar y, dentro de las secuencias de cada intervalo, se debe poder llegar a la última posición desde la primera mediante incrementos.
Los algoritmos de STL extienden las acciones que admiten las operaciones y las funciones miembro de cada contenedor de STL y permiten trabajar, por ejemplo, con diferentes tipos de objetos contenedor al mismo tiempo. Se usan dos sufijos para transmitir información sobre el propósito de los algoritmos.
El sufijo _if indica que el algoritmo se usa con objetos de función que operan sobre los valores de los elementos, en lugar de usarse con los valores de los propios elementos. El algoritmo find_if busca los elementos cuyos valores satisfacen el criterio especificado por un objeto de función y el algoritmo find busca un valor determinado.
El sufijo _copy indica que el algoritmo no solo manipula los valores de los elementos, sino que también copia los valores modificados a un intervalo de destino. El algoritmo reverse invierte el orden de los elementos dentro de un intervalo y el algoritmo reverse_copy también copia el resultado a un intervalo de destino.
Los algoritmos de STL se suelen clasificar en grupos que indican de alguna manera su propósito o sus requisitos. Entre ellos se incluyen algoritmos de modificación que cambian el valor de los elementos, a diferencia de los algoritmos que no son de modificación, que no lo hacen. Los algoritmos de mutación cambian el orden de los elementos, pero no los valores de sus elementos. Los algoritmos de eliminación pueden eliminar elementos de un intervalo o de una copia de un intervalo. Los algoritmos de ordenación reordenan los elementos de un intervalo de varias maneras y los algoritmos de intervalo ordenado solo actúan sobre los algoritmos cuyos elementos se han ordenado de una manera determinada.
Los algoritmos numéricos de STL que se proporcionan para el procesamiento numérico tienen su propio archivo de encabezado <numeric>, y los objetos de función y los adaptadores se definen en el encabezado <functional>. Los objetos de función que devuelven valores booleanos se conocen como predicados. El predicado binario predeterminado es el operator< de comparación. En general, los elementos que se van a ordenar deben ser menores que otros comparables para que, dados dos elementos cualesquiera, se pueda determinar que son equivalentes (en el sentido de que ninguno es menor que el otro) o que uno es menor que el otro. Esto produce una ordenación entre los elementos no equivalentes.
Funciones
Busca dos elementos adyacentes que son iguales o cumplen una condición especificada. |
|
Devuelve true cuando una condición está presente en todos los elementos del intervalo especificado. |
|
Devuelve true cuando una condición está presente al menos una vez en el intervalo especificado de elementos. |
|
Comprueba si hay un elemento en un intervalo ordenado que sea igual a un valor especificado o equivalente a este del modo especificado por un predicado binario. |
|
Asigna los valores de elementos de un intervalo de origen a un intervalo de destino, recorriendo en iteración la secuencia de origen de elementos y asignándoles nuevas posiciones en una dirección hacia delante. |
|
Asigna los valores de elementos de un intervalo de origen a un intervalo de destino, recorriendo en iteración la secuencia de origen de elementos y asignándoles nuevas posiciones en una dirección hacia atrás. |
|
Copia todos los elementos de un intervalo especificado que comprueban true para una condición especificada |
|
Copia un número especificado de elementos. |
|
Devuelve el número de elementos de un intervalo cuyos valores coinciden con un valor especificado. |
|
Devuelve el número de elementos de un intervalo cuyos valores coinciden con una condición especificada. |
|
Compara dos intervalos elemento a elemento para ver si son iguales o equivalentes según lo especificado por un predicado binario. |
|
Busca un par de posiciones en un intervalo ordenado; la primera es menor o equivalente a la posición de un elemento especificado y la segunda es mayor que la posición del elemento, donde el sentido de equivalencia o de ordenación empleado para establecer las posiciones en la secuencia se puede especificar con un predicado binario. |
|
Asigna el mismo valor nuevo a cada elemento de un intervalo especificado. |
|
Asigna un nuevo valor a un número especificado de elementos en un intervalo que comienza con un elemento determinado. |
|
Busca la posición de la primera aparición de un elemento en un intervalo que tiene un valor especificado. |
|
Busca en un intervalo la última subsecuencia que es idéntica a una secuencia especificada o que es equivalente según lo especificado por un predicado binario. |
|
Busca la primera aparición de cualquiera de varios valores dentro de un intervalo de destino o la primera aparición de cualquiera de varios elementos que son equivalentes según lo especificado por un predicado binario en un conjunto especificado de los elementos. |
|
Busca la posición de la primera aparición de un elemento en un intervalo que cumple una condición especificada. |
|
Devuelve el primer elemento del intervalo indicado que no satisface una condición. |
|
Aplica un objeto de función especificado a cada elemento en un orden hacia delante dentro de un intervalo y devuelve el objeto de función. |
|
Asigna los valores generados por un objeto de función a cada elemento de un intervalo. |
|
Asigna los valores generados por un objeto de función a un número especificado de elemento de un intervalo y vuelve a la posición situada una más allá del último valor asignado. |
|
Prueba si un intervalo ordenado contiene todos los elementos incluidos en un segundo intervalo ordenado, donde el criterio de ordenación o equivalencia entre los elementos se pueden especificar mediante un predicado binario. |
|
Combina los elementos de dos intervalos ordenados consecutivos en un único intervalo ordenado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Devuelve true si los elementos del intervalo especificado forman un montón. |
|
Devuelve true si el intervalo especificado forma un montón hasta el último elemento. |
|
Devuelve true si todos los elementos del intervalo especificado que prueban si una condición es true aparecen antes que cualquier elemento que prueba si es false. |
|
Determina si los elementos de un intervalo determinado forman una permutación válida. |
|
Devuelve true si los elementos del intervalo especificado están ordenados. |
|
Devuelve true si los elementos del intervalo especificado están ordenados. |
|
Intercambia dos valores a los que se hace referencia mediante un par de iteradores especificados. |
|
Compara dos secuencias elemento a elemento para determinar cuál es menor de los dos. |
|
Busca la posición del primer elemento en un intervalo ordenado que tiene un valor mayor o equivalente a un valor especificado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Convierte elementos de un intervalo especificado en un montón en el que el primer elemento es el mayor y para el que se puede especificar un criterio de ordenación con un predicado binario. |
|
Compara dos objetos y devuelve el mayor de los dos, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Busca la primera aparición del elemento mayor en un intervalo especificado donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Combina todos los elementos de dos intervalos de origen ordenados en un único intervalo de destino ordenado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Compara dos objetos y devuelve el menor de los dos, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Busca la primera aparición del menor elemento en un intervalo especificado donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Compara dos parámetros de entrada y los devuelve como un par, en orden de menor a mayor. |
|
Realiza el trabajo efectuado por min_element y max_element en una llamada. |
|
Compara dos intervalos elemento a elemento para ver si son iguales o equivalentes según lo especificado por un predicado binario y busca la primera posición donde se produce una diferencia. |
|
Mueve los elementos asociados a un intervalo especificado. |
|
Mover los elementos de un iterador a otro. El movimiento comienza con el último elemento de un intervalo especificado y termina con el primer elemento de ese intervalo. |
|
Reorganiza los elementos de un intervalo de modo que la ordenación original se reemplaza con la mayor permutación lexicográficamente siguiente si existe, donde el sentido de siguiente se puede especificar con un predicado binario. |
|
Devuelve true cuando una condición nunca está presente entre los elementos del intervalo especificado. |
|
Divide un intervalo de elementos correctamente situando el enésimo elemento de la secuencia en el intervalo de modo que todos los elementos que hay delante sean menores o iguales que él y todos los elementos que lo siguen en la secuencia sean mayores o iguales que él. |
|
Organiza un número especificado de los elementos menores de un intervalo en un orden no descendente, o de acuerdo con un criterio de ordenación especificado por un predicado binario. |
|
Copia los elementos de un intervalo de origen a un intervalo de destino donde los elementos de origen están ordenados por menor que u otro predicado binario especificado. |
|
Clasifica los elementos de un intervalo en dos conjuntos disjuntos, donde los elementos que satisfacen un predicado unario preceden a los que no lo satisfacen. |
|
Copia a un destino los elementos para los que una condición es true y a otro destino diferente los elementos para los que la condición es false. Los elementos deben proceder de un intervalo especificado. |
|
Devuelve el primer elemento del intervalo especificado que no satisface la condición. Los elementos se ordenan de forma que aquellos que satisfacen la condición están antes que los que no lo hacen. |
|
Quita el elemento mayor del principio de un montón hasta la penúltima posición del intervalo y después forma un nuevo montón con los elementos restantes. |
|
Reorganiza los elementos de un intervalo de modo que la ordenación original se reemplaza con la mayor permutación lexicográficamente siguiente si existe, donde el sentido de siguiente se puede especificar con un predicado binario. |
|
Agrega un elemento que está al final de un intervalo a un montón existente que se compone de los elementos anteriores del intervalo. |
|
Reorganiza una secuencia de N elementos de un rango en una de N! organizaciones posibles seleccionadas aleatoriamente. |
|
Elimina un valor especificado de un intervalo determinado sin alterar el orden de los elementos restantes y devolver el final de un nuevo intervalo libre del valor especificado. |
|
Copia elementos de un intervalo de origen a un intervalo de destino, excepto que los elementos de un valor especificado no se copian, sin alterar el orden de los elementos restantes y devolver el final de un nuevo intervalo de destino. |
|
Copia elementos de un intervalo de origen a un intervalo de destino, excepto que los elementos que satisfacen un predicado no se copian, sin alterar el orden de los elementos restantes y devolver el final de un nuevo intervalo de destino. |
|
Elimina los elementos que cumplen un predicado de un intervalo determinado sin alterar el orden de los elementos restantes y devolver el final de un nuevo intervalo libre del valor especificado. |
|
Examina cada elemento de un intervalo y lo reemplaza si coincide con un valor especificado. |
|
Examina cada elemento de un intervalo de origen y lo reemplaza si coincide con un valor especificado y copia el resultado a un nuevo intervalo de destino. |
|
Examina cada elemento de un intervalo de origen y lo reemplaza si satisface un predicado especificado y copia el resultado a un nuevo intervalo de destino. |
|
Examina cada elemento de un intervalo y lo reemplaza si satisface un predicado especificado. |
|
Invierte el orden de los elementos dentro de un intervalo. |
|
Invierte el orden de los elementos dentro de un intervalo de origen mientras los copia a un intervalo de destino |
|
Intercambia los elementos de dos intervalos adyacentes. |
|
Intercambia los elementos de dos intervalos adyacentes dentro de un intervalo de origen y copia el resultado a un intervalo de destino. |
|
Busca la primera aparición de una secuencia dentro de un intervalo de destino cuyos elementos son iguales que los de una secuencia determinada de elementos o cuyos elementos son equivalentes según lo especificado por un predicado binario a los elementos de la secuencia especificada. |
|
Busca la primera subsecuencia de un intervalo en la que un número especificado de elementos tienen un valor determinado o una relación con ese valor según lo especificado por un predicado binario. |
|
Agrupa todos los elementos que pertenecen a un intervalo de origen ordenado, pero no a un segundo intervalo de origen ordenado, en un único intervalo de destino ordenado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Agrupa todos los elementos que pertenecen a ambos intervalos de origen ordenados en un único intervalo de destino ordenado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Agrupa todos los elementos que pertenecen a uno, pero no a ambos, de los intervalos de origen ordenados en un único intervalo de destino ordenado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Agrupa todos los elementos que pertenecen al menos a uno de los dos intervalos de origen ordenados en un único intervalo de destino ordenado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
|
Organiza los elementos de un intervalo especificado en un orden no descendente o de acuerdo con un criterio de ordenación especificado por un predicado binario. |
|
Ordena aleatoriamente (reordena) elementos de un rango determinado usando un generador de números aleatorios. |
|
Convierte un montón en un intervalo ordenado. |
|
Clasifica los elementos de un intervalo en dos conjuntos disjuntos, donde los elementos que satisfacen un predicado unario preceden a los que no lo satisfacen, conservando el orden relativo de los elementos equivalentes. |
|
Organiza los elementos de un intervalo especificado en un orden no descendente o de acuerdo con un criterio de ordenación especificado por un predicado binario y conserva el orden relativo de los elementos equivalentes. |
|
Intercambia los valores de los elementos entre dos tipos de objetos, asignando el contenido del primer objeto al segundo objeto y el contenido del segundo al primero. |
|
Intercambia los elementos de un intervalo con los elementos de otro intervalo del mismo tamaño. |
|
Aplica un objeto de función especificado a cada elemento de un intervalo de origen o a un par de elementos de dos intervalos de origen y copia los valores devueltos del objeto de función a un intervalo de destino. |
|
Quita los elementos duplicados adyacentes entre sí en un intervalo especificado. |
|
Copia los elementos de un intervalo de origen a un intervalo de destino salvo los elementos duplicados que son adyacentes entre sí. |
|
Busca la posición del primer elemento de un intervalo ordenado que tiene un valor mayor que un valor especificado, donde el criterio de ordenación se puede especificar mediante un predicado binario. |
Vea también
Referencia
Seguridad para subprocesos en la biblioteca estándar de C++
Biblioteca de plantillas estándar