STL en c ++: todo lo que necesita saber



Este artículo le proporcionará un conocimiento detallado y completo de STL en C ++ y también le dará una idea sobre los diferentes contenedores.

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.

Container-STL-in-C++

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:

  1. Conjunto
  2. Multiset
  3. Mapa
  4. 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.