La biblioteca de plantillas estándar (STL) es un conjunto de clases de plantillas de C ++ para proporcionar estructuras y funciones de datos de programación comunes, como listas, pilas, matrices, etc. En este artículo de STL en C ++ discutiremos los siguientes consejos:
Continuando con este artículo sobre STL en C ++
cómo compilar código java
Plantillas C ++
C ++ nos proporciona una característica de plantillas que permite que funciones y clases operen con tipos genéricos. Esto permite la reutilización de una función o clase y le permite trabajar en muchos tipos de datos diferentes sin ser reescrito para cada uno.
Continuando con este artículo sobre STL en C ++
Funciones genéricas y STL
Mientras se programa muchas veces, es necesario crear funciones que realicen las mismas operaciones pero que trabajen con diferentes tipos de datos. Entonces, para superar este problema, C ++ proporciona una característica para crear una única función genérica en lugar de muchas funciones que pueden trabajar con diferentes tipos de datos utilizando el parámetro de plantilla. La colección de estas clases y funciones genéricas se denomina Biblioteca de plantillas estándar (STL)
Los componentes de STL que ahora forman parte de la biblioteca estándar de C ++ se definen en el espacio de nombres std. Por lo tanto, debemos utilizar la directiva using namespace para importarlos a nuestro programa.
Sintaxis:
Usando el espacio de nombres std
STL tiene tres componentes
Contenedores
Algoritmos
Iteradores
Estos tres componentes trabajan juntos en sinergia para brindar soporte a una variedad de soluciones de programación. El algoritmo emplea iteradores para realizar operaciones almacenadas en contenedores.
Un contenedor es un objeto que almacena datos en la memoria de forma organizada. Los contenedores en STL se implementan mediante clases de plantilla y, por lo tanto, se pueden modificar y personalizar fácilmente para contener diferentes tipos de datos.
Un procedimiento que se utiliza para procesar los datos contenidos en los contenedores se define como un algoritmo. El STL incluye muchos tipos diferentes de algoritmos para brindar soporte a tareas como inicializar, buscar, copiar, ordenar y fusionar, copiar, clasificar y fusionar. Los algoritmos se implementan mediante funciones de plantilla.
Un iterador se puede definir como un objeto que apunta a un elemento en un contenedor. Los iteradores se pueden utilizar para moverse por el contenido de los contenedores. Los iteradores se manejan como punteros. Podemos incrementarlos o disminuirlos. Los iteradores conectan el algoritmo con los contenedores y juegan un papel clave en la manipulación de los datos almacenados en los contenedores.
Continuando con este artículo sobre STL en C ++
Contenedores
STL define diez contenedores que se agrupan en tres categorías.
Contenedores | Descripción | Archivo de cabecera | Iterador |
Vector | Puede definirse como una matriz dinámica. Permite el acceso directo a cualquier elemento. | Acceso aleatorio | |
Lista | Es una lista lineal bidireccional. Permite la inserción y eliminación en cualquier lugar. | Bidireccional | |
y | Es una cola de dos extremos. Permite inserciones y eliminaciones en ambos extremos. Permite el acceso directo a cualquier elemento. | Acceso aleatorio | |
conjunto | Es un contenedor asociado para almacenar conjuntos únicos. Permite una búsqueda rápida. | Bidireccional | |
multiset | Es un contenedor asociado para almacenar conjuntos no únicos. | Bidireccional | |
mapa | Es un contenedor asociado para almacenar pares clave / valor únicos. Cada clave está asociada con un solo valor. | Bidireccional | |
multimapa | Es un contenedor asociado para almacenar clave / valor en el que una clave puede estar asociada con más de un valor (asignación de uno a muchos). Permite una búsqueda basada en claves. | Bidireccional | |
apilar | Una pila estándar sigue al último en entrar, primero en salir (LIFO) | Sin iterador | |
cola | Una cola estándar sigue al primero en entrar, primero en salir (FIFO) | Sin iterador | |
cola de prioridad | El primer elemento que sale es siempre el elemento de mayor prioridad | Sin iterador |
Contenedores de secuencia
Los contenedores de secuencia almacenan elementos en un orden lineal. Todos los elementos están relacionados entre sí por su posición a lo largo de la línea. Permiten la inserción de elementos y todos ellos soportan varias operaciones sobre ellos.
El STL proporciona tres tipos de elementos de secuencia:
- Vector
- Lista
- y
Contenedores asociativos:
Están diseñados de tal manera que pueden admitir el acceso directo a los elementos mediante claves. No son secuenciales. Hay cuatro tipos de
contenedores asociativos:
- Conjunto
- Multiset
- Mapa
- Multimapa
Todos los contenedores anteriores almacenan datos en una estructura llamada árbol que facilita
búsqueda, eliminación e inserción a diferencia de secuencial. Los conjuntos de contenedores o conjuntos múltiples pueden almacenar varios elementos y proporcionar operaciones para manipularlos utilizando los valores como claves.
Y el mapa o el multimapa se utilizan para almacenar elementos en pareja, uno llamado clave y otro
llamado el valor.
Contenedores derivados:
El STL proporciona tres contenedores derivados, a saber, pila, cola y priority_queue. También se conocen como adaptadores de contenedor.
Hay tres tipos de contenedores derivados:
1 apilar
2 cola
3.Priority_quue
Las pilas, la cola y la cola de prioridad se pueden crear fácilmente a partir de diferentes contenedores de secuencia. Los contenedores derivados no admiten iteradores y, por lo tanto, no podemos usarlos para la manipulación de datos. Sin embargo, admiten dos funciones miembro pop () y push () para implementar operaciones de eliminación e inserción.
Continuando con este artículo sobre STL en C ++
cómo crear una alerta en javascript
Algoritmos
Los algoritmos son funciones que se pueden usar generalmente en una variedad de contenedores para procesar su contenido. Aunque cada contenedor proporciona funciones para sus operaciones básicas, STL proporciona más de sesenta algoritmos estándar para admitir operaciones más complejas o extendidas. Los algoritmos estándar también nos permiten trabajar con dos tipos diferentes de contenedores al mismo tiempo.
Los algoritmos STL refuerzan la filosofía de reutilización. Al utilizar estos algoritmos, los programadores pueden ahorrar mucho tiempo y esfuerzo. Para tener acceso a los algoritmos STL, debemos incluirlos en nuestro programa.
El algoritmo STL, basado en la naturaleza de las operaciones que realizan, puede clasificarse en:
Algoritmos no mutantes
Algoritmos de mutación
Ordenar algoritmos
Establecer algoritmos
Algoritmo relacional
Continuando con este artículo sobre STL en C ++
Iteradores:
Los iteradores actúan como punteros y se utilizan para acceder a elementos del contenedor. Usamos iteradores para movernos por el contenido de los contenedores. Los iteradores se manejan como punteros. Podemos incrementarlos o disminuirlos según nuestros requisitos. Los iteradores conectan contenedores con algoritmos y juegan un papel vital en la manipulación de los datos almacenados en los contenedores. A menudo se utilizan para pasar de un elemento a otro, este proceso se llama iterar a través del contenedor.
Hay cinco tipos de iteradores:
1.Entrada
2.Salida
3.hacia adelante
4.Bidireccional
5.Aleatorio
Iterador | Método de acceso | Dirección de movimiento | Capacidad de E / S | Observación |
Entrada | Lineal | Solo reenviar | Solo lectura | No se puede guardar |
Salida | Lineal | Solo reenviar | Escribir solamente | No se puede guardar |
Adelante | Lineal | Solo reenviar | Leer escribir | Puede ser salvado |
Bidireccional | Lineal | Adelante y hacia atrás | Leer escribir | Puede ser salvado |
Aleatorio | Aleatorio | Adelante y hacia atrás | Leer escribir | Puede ser salvado |
Se deben usar diferentes tipos de iteradores con los diferentes tipos de contenedores de modo que solo
Los contenedores secuenciales y asociativos pueden viajar a través de iteradores. Cada tipo de iteradores se utiliza para realizar determinadas funciones. Los iteradores de entrada y salida admiten las funciones mínimas. Solo se pueden usar para pasar en un recipiente. Los iteradores directos admiten todas las operaciones de los iteradores de entrada y salida y también conservan su posición en el contenedor. Un iterador bidireccional, si bien admite todas las operaciones de iteradores hacia adelante, proporciona la capacidad de moverse hacia atrás en el contenedor.
Por lo tanto, hemos llegado al final de este artículo sobre 'STL en C ++'. Si desea obtener más información, consulte el por Edureka, una empresa de aprendizaje en línea de confianza. El curso de certificación y capacitación Java J2EE y SOA de Edureka está diseñado para capacitarlo en conceptos básicos y avanzados de Java junto con varios marcos de Java como Hibernate y Spring.
Tienes una pregunta para nosotros? Menciónelo en la sección de comentarios de este blog y nos pondremos en contacto con usted lo antes posible.