Algoritmo STL
**** Todo el mundo se dará cuenta de que la elección de los tipos de datos para una biblioteca de funciones juega un papel crucial en su reutilización. Por ejemplo, una función que encuentra raíces cuadradas que usa números de punto flotante como tipos de parámetros es definitivamente más reutilizable que usar números enteros como tipos de parámetros. C permite diferir ciertos tipos de elecciones a través del mecanismo de plantilla hasta el momento en que la plantilla realmente se necesita o se especializa, y STL aprovecha esto para proporcionar una serie de algoritmos útiles. Implementa estos algoritmos en un marco eficiente: divide todos los tipos en algunas categorías y luego puede usar un tipo en los parámetros de la plantilla para reemplazar otros tipos en la misma categoría.
STL proporciona alrededor de 100 funciones de plantilla que implementan algoritmos. Por ejemplo, el algoritmo for_each llamará a la función especificada para cada elemento en la secuencia especificada, y el algoritmo stable_sort ordenará de manera estable la secuencia de acuerdo con las reglas que usted. especificar, etc. De esta manera, una vez que nos familiarizamos con STL, muchos códigos se pueden simplificar enormemente y solo se llama a una o dos plantillas de algoritmo para completar las funciones requeridas y mejorar la eficiencia.
La parte del algoritmo consta de los archivos de encabezado lt;algorithmgt;, lt;numericgt; y lt;functionalgt;. lt; el algoritmo gt; es el más grande de todos los archivos de encabezado STL (aunque es fácil de entender). Consta de un gran conjunto de funciones de plantilla. Se puede considerar que cada función de plantilla es en gran medida independiente y se utiliza a menudo para comparar. intercambiar, buscar, iterar, copiar, modificar, eliminar, revertir, ordenar, fusionar y otras funciones. La capacidad de lt;numericgt; es muy pequeña, e incluye solo unas pocas funciones de plantilla además de secuencias de operaciones matemáticas simples, incluidas algunas operaciones además de secuencias de suma y multiplicación. lt; funcionalgt; define varias clases de plantilla para declarar objetos de función.