¿Cuál es la relación entre la biblioteca estándar de C++, la biblioteca de programas estándar y la biblioteca de plantillas estándar?
Las poderosas funciones de C++ provienen de su rica biblioteca de clases y recursos de funciones de biblioteca. El contenido de la biblioteca estándar de C++ se define en 50 archivos de encabezado estándar. En el desarrollo de C++, se debe utilizar la biblioteca estándar tanto como sea posible. Los beneficios directos de esto son:
(1) Costo: ya se proporciona como estándar, entonces, ¿por qué molestarse en gastar tiempo y mano de obra para volver a desarrollarlo?
(2); ) Calidad: Toda la biblioteca estándar ha sido estrictamente probada y la corrección está garantizada;
(3) Eficiencia: En cuanto a la eficiencia de las personas, ya se refleja en el costo de ejecución. el código, debemos confiar en el nivel de los expertos que implementan la biblioteca estándar;
(4) Buen estilo de programación: adoptar prácticas comunes en la industria para el desarrollo.
En el curso de programación C++, especialmente como primer curso de programación, nos centramos en la sintaxis, los mecanismos del lenguaje y otros aspectos. Existe un proceso para cultivar las capacidades de programación. Es una práctica común omitir el conocimiento de los principios básicos y ingresar directamente a la ingeniería. Además, una vez que se dominan los principios básicos, la comprensión de la biblioteca estándar se puede dominar gradualmente mediante la práctica. El estudio de la biblioteca estándar no requiere una lectura seria. Lo que se requiere es comprender la descripción general y profundizar en la práctica.
Esta tarea es conocer esta parte del contenido que no se enseña en el curso de programación en C++, pero que es muy importante para la programación. Al menos primero debemos poder responder la pregunta "qué".
1. Biblioteca estándar de C++
El contenido de la biblioteca estándar de C++ se divide en 10 categorías, a saber (se recomienda que al leer clasifique los archivos de encabezado que haya utilizado o oído hablar):
C1. Archivos de encabezado relacionados con funciones de soporte de idiomas en la biblioteca estándar
C2. C3. Con archivos de encabezado relacionados con funciones de diagnóstico
C4 Archivos de encabezado que definen funciones de herramientas
C5 Archivos de encabezado que admiten el procesamiento de cadenas
Definir contenedor. clases Archivos de encabezado de plantilla
C7. Archivos de encabezado que admiten iteradores
C8 Archivos de encabezado relacionados con algoritmos
C9. >
p>
C10. Archivos de encabezado localizados
Todos los archivos de encabezado en la biblioteca estándar de C++ no tienen extensiones. La biblioteca estándar de C++ se proporciona como un archivo de encabezado estándar con el formato
2. Introducción a la biblioteca de plantillas estándar STL [1]
STL (Biblioteca de plantillas estándar) es el nombre colectivo de una serie de software desarrollado por HP Labs. Ahora se encuentra principalmente en C++, pero la tecnología existe desde hace mucho tiempo antes de ser introducida en C++.
El código STL se divide ampliamente en tres categorías: algoritmo (algoritmo), contenedor (contenedor) e iterador (iterador). Casi todos los códigos utilizan clases de plantilla y funciones de plantilla, lo que proporciona mejores oportunidades de reutilización de código que las bibliotecas tradicionales. compuesto por funciones y clases. En el estándar C++, STL está organizado en los siguientes 13 archivos de encabezado:
1. Algoritmo
La elección del tipo de datos en una biblioteca de funciones juega un papel crucial en su reutilización.
Por ejemplo, una función de raíz cuadrada que utiliza números de punto flotante como tipo de parámetro es definitivamente más reutilizable que una que utiliza números enteros como tipo de parámetro. C++ permite posponer la selección de ciertos tipos a través del mecanismo de plantilla hasta que realmente desee utilizar la plantilla o especializarla. STL aprovecha esto para proporcionar bastantes algoritmos útiles. Completa estos algoritmos en un marco eficiente: todos los tipos se pueden dividir en algunas categorías y luego un tipo se puede usar para reemplazar otros tipos en la misma categoría en los parámetros de la plantilla.
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, stable_sort realiza una clasificación de estabilidad en la secuencia de acuerdo con las reglas que usted especifique. etc. espera. De esta manera, siempre que esté familiarizado con STL, muchos códigos se pueden simplificar enormemente. Con solo llamar a una o dos plantillas de algoritmo, puede completar las funciones requeridas y mejorar enormemente la eficiencia.
La parte del algoritmo consta principalmente de archivos de encabezado
2. Contenedor
En el proceso de desarrollo real, la importancia de la estructura de datos en sí no es menos importante que el algoritmo que opera en la estructura de datos. partes críticas, la elección de la estructura de datos se vuelve aún más importante.
El número de estructuras de datos clásicas es limitado, pero a menudo repetimos algunos códigos escritos para implementar estructuras como vectores y listas vinculadas. Estos códigos son muy similares, pero existen diferencias en los detalles para adaptarse a los cambios. Datos diferentes de entrada y salida. El contenedor STL nos brinda tal conveniencia. Nos permite reutilizar implementaciones existentes para construir nuestras propias estructuras de datos de tipos específicos. Al configurar algunas clases de plantilla, el contenedor STL brinda soporte para las estructuras de datos más utilizadas. Nos permite especificar el tipo de datos de los elementos en el contenedor, lo que puede simplificar muchas de nuestras tareas repetitivas y tediosas.
La parte del contenedor consta principalmente de archivos de encabezado ,
3. Iterador
El iterador es la parte más básica en términos de función, pero es más difícil de entender que los dos primeros. Existe un principio básico en el diseño de software de que todos los problemas se pueden simplificar introduciendo una capa de direccionamiento indirecto. Esta simplificación se logra utilizando iteradores en STL. En resumen, los iteradores se utilizan en STL para conectar algoritmos y contenedores y actuar como pegamento. Casi todos los algoritmos proporcionados por STL funcionan accediendo a una secuencia de elementos a través de iteradores. Cada contenedor define su propio iterador propietario para acceder a los elementos del contenedor.
La parte del iterador consta principalmente de los archivos de encabezado
3. Postscript
Generalmente existen dos puntos de vista sobre el uso de STL. El primero cree que el papel más importante de STL es servir como un libro de texto clásico sobre estructuras de datos y algoritmos, porque su código fuente implica muchos problemas de implementación específicos. El segundo tipo cree que la intención original de STL es simplificar el diseño, evitar la duplicación del trabajo y mejorar la eficiencia de la programación. Por lo tanto, debería ser "la aplicación primero" y no es necesario profundizar en el código fuente. Para los principiantes, es de gran importancia mejorar la comprensión de su aplicación mediante el análisis del código fuente.
Una vez pensé en diseñar algunas preguntas basadas en computadora para permitir a los estudiantes experimentar la programación usando STL. Escribir un tema que sea adecuado para principiantes, que no sea demasiado grande y que tenga suficiente orientación, es realmente una tarea que requiere mucho tiempo y trabajo. Además, si hay otras cosas que deben ser urgentes, lo haré. Deja esta deuda y habla de ello más tarde. Mi sugerencia para los estudiantes es que muchos libros de texto clásicos de C ++ tienen muy buenas explicaciones de STL. Pueden elegir uno para leer. Al leer, debes empezar a aprender a leer de forma selectiva y salteada, en lugar de leer de principio a fin, página por página. En esta etapa, primero puede aprender la utilidad iteradora, vector, que se recomienda para reemplazar matrices en programación C++, y list, que implementa una lista doblemente enlazada. El vector y la lista parecen estar algo relacionados con las tareas 1 y 2 de esta semana. Además, debemos mantener nuestro espíritu de ser particularmente prácticos y encontrar algunos temas a tiempo o inventar nuestros propios temas para practicar.