El vector en c++ stl es muy fácil de usar, entonces, ¿cómo se implementa?
Esto requiere mirar el código fuente. Para ser honesto, el código en STL es realmente difícil de entender.
Si no está demasiado enredado en los detalles específicos, puede hablar brevemente sobre las ideas básicas de implementación, que son aproximadamente las siguientes:
Funcionalmente hablando, vector es un contenedor de almacenamiento secuencial , por lo que la implementación subyacente generalmente se basa en una matriz.
Vector se implementa utilizando tecnología de metaprogramación de plantillas. Específicamente, el compilador realiza una especialización de plantillas en tiempo de compilación en función del tipo real especificado durante el uso y compila el código correspondiente. En otras palabras, vector
Una de las características importantes del vector es el incremento dinámico de la matriz. En pocas palabras, la capacidad máxima actual y el uso se registran dentro del contenedor. Al agregar elementos, si la clase de contenedor descubre que la capacidad actual se ha agotado, la clase de contenedor reasignará automáticamente una matriz con una capacidad mayor, copiará todos los elementos actuales y luego liberará la matriz anterior, logrando así una autocontrol dinámica. es completamente transparente para los usuarios.
Vector proporciona iteradores para proporcionar una interfaz de acceso transversal unificada para facilitar la interacción con otros componentes en STL.
Habrá muchos detalles, como por ejemplo:
1. ¿Se permite que Vector reduzca su capacidad cuando sea necesario?
2. ¿Cuál es el incremento después de que se agota la capacidad del vector?
3. ¿Deberían proporcionarse contenedores seguros para subprocesos?
Es posible que sea necesario leer algunas cosas a través del código fuente para comprenderlas. O puede consultar el "Análisis del código fuente STL" de Hou Jie. De hecho, la implementación del vector en sí no es demasiado complicada y su idea de implementación también es muy simple, pero algunas opciones a nivel de diseño deben considerarse cuidadosamente. En términos generales, STL es un respaldo lo suficientemente sólido como para utilizarlo con frecuencia para crear software robusto y eficiente. Ser capaz de comprender algunas ideas de diseño y métodos de implementación en STL ayudará a mejorar nuestro pensamiento y habilidades de programación.