Lista en c++
En informática, un vector se refiere a una estructura similar a un array que contiene un conjunto de elementos de acceso directo del mismo tipo, en lugar de un vector matemático de n componentes. A diferencia del array que es de tamaño fijo, el vector es de tamaño dinámico. vector es una plantilla de clase, declarada en la cabecera de vector.
Podemos utilizar un objeto especial llamado iterador para iterar a través de todos los elementos de un contenedor STL, como vector. La clase vector proporciona un par de funciones begin() y end() para trabajar con iterator. Para utilizar el iterador:
Un iterador se comporta como un puntero genérico, que puede ser usado para referenciar (apuntar a) un elemento individual de un contenedor genérico; y atravesar los elementos de un contenedor. El propósito del iterador es hacer que la transversalidad (iteración) de los contenedores sea independiente del tipo de los mismos (por ejemplo, vector<int>, cola<double>, pila<string>). Con el iterador, puedes aplicar un algoritmo genérico (como búsqueda, ordenación y comparación) al contenedor, independientemente de los tipos. Sin el iterador, puede ser necesario escribir diferentes códigos para el mismo algoritmo para diferentes contenedores (por ejemplo, diferentes códigos para buscar un vector<int>, vector<double>, stack<string>).
Archivos Stl
Cuando se selecciona un elemento en el editor de contenido, puede ver las secciones de su plantilla en el panel derecho. Eche un vistazo a la imagen de abajo. Todas las secciones señaladas con el color rojo están definidas en la plantilla estándar.
Cada plantilla hereda las secciones de su plantilla base, definida en el campo de la plantilla _Base. Por lo tanto, si desea implementar las secciones mostradas en la imagen anterior, su plantilla debe heredar de la plantilla Estándar (o de la plantilla que hereda de la plantilla Estándar).
Stl c++
Los contenedores replican estructuras muy utilizadas en programación: arrays dinámicos (vector), colas (queue), pilas (stack), heaps (priority_queue), listas enlazadas (list), árboles (set), arrays asociativos (map)…
Muchos contenedores tienen varias funciones miembros en común, y comparten funcionalidades. La decisión de qué tipo de contenedor utilizar para una necesidad concreta no suele depender sólo de la funcionalidad que ofrece el contenedor, sino también de la eficiencia de algunos de sus miembros (complejidad). Esto es especialmente cierto en el caso de los contenedores de secuencias, que ofrecen diferentes compensaciones de complejidad entre la inserción/remoción de elementos y el acceso a los mismos.
stack, queue y priority_queue se implementan como adaptadores de contenedores. Los adaptadores de contenedores no son clases contenedoras completas, sino clases que proporcionan una interfaz específica que depende de un objeto de una de las clases contenedoras (como deque o list) para manejar los elementos. El contenedor subyacente está encapsulado de tal manera que sus elementos son accedidos por los miembros del adaptador de contenedor independientemente de la clase de contenedor subyacente utilizada.
Vector c++
En el listado 13.1, el cuadrado de ‘int’ y ‘double’ se calcula en las líneas 7 y 11. Nótese que, las dos funciones son exactamente iguales excepto los ‘tipos’ de la entrada y la salida. Esta repetición del código puede ser eliminada usando plantillas como se muestra en el Listado 13.2.
La STL (Standard Template Library) es una colección de plantillas de C++ que proporciona varias implementaciones útiles de algoritmos y estructuras de datos como «vector», «cola» y «lista», etc. Además, estas plantillas son «estandarizadas», «eficientes», «precisas» y permiten la «reutilización». Las plantillas pueden dividirse en tres categorías,
El listado 13.3 es un ejemplo de ‘contenedor’, ‘iterador’ y ‘algoritmo’ de la biblioteca STL. Aquí un contenedor de enteros, es decir, ‘vector v_int’ se define en la línea 8. Luego se utiliza el método ‘push_back’ en la línea 16, que agrega los elementos en el vector. A continuación, la variable ‘vi’ de tipo ‘iterador’ se utiliza en la línea 20, que almacena la ubicación inicial del contenedor ‘v_int’. Este iterador ‘vi’ se utiliza para imprimir los valores almacenados en el vector mediante el bucle ‘while’ en las Líneas 21-25. Por último, se utiliza un algoritmo ‘reverse’ en la Línea 28, que invierte el número almacenado en el contenedor ‘v_int’ utilizando los iteradores ‘begin()’ y ‘end()’. En este listado se utilizan las siguientes funciones,