En informática , un contenedor es una clase , una estructura de datos , [1] [2] o un tipo de datos abstracto (ADT) cuyas instancias son colecciones de otros objetos. En otras palabras, almacenan objetos de una manera organizada que sigue reglas de acceso específicas. El tamaño del contenedor depende de la cantidad de objetos (elementos) que contiene. Las implementaciones subyacentes (heredadas) de varios tipos de contenedores pueden variar en tamaño y complejidad, y brindan flexibilidad para elegir la implementación adecuada para cualquier escenario dado.
Función y propiedades
Los contenedores se pueden caracterizar por las siguientes tres propiedades:
- acceso , que es la forma de acceder a los objetos del contenedor. En el caso de las matrices, el acceso se realiza con el índice de la matriz. En el caso de las pilas, el acceso se realiza según el orden LIFO (último en entrar, primero en salir) y en el caso de las colas se realiza según el orden FIFO (primero en entrar , primero en salir);
- almacenamiento , que es la forma de almacenar los objetos del contenedor;
- atravesar , esa es la forma de atravesar los objetos del contenedor.
Se espera que las clases de contenedor implementen métodos para hacer lo siguiente:
- crear un contenedor vacío (constructor);
- inserte objetos en el contenedor;
- eliminar objetos del contenedor;
- eliminar todos los objetos del contenedor (borrar);
- acceder a los objetos del contenedor;
- acceder a la cantidad de objetos en el contenedor (recuento).
Los contenedores a veces se implementan junto con iteradores .
Tipos
Los contenedores pueden clasificarse como contenedores de valor único o contenedores asociativos .
Los contenedores de valor único almacenan cada objeto de forma independiente. Se puede acceder a los objetos directamente o con un iterador .
Un contenedor asociativo utiliza una matriz , mapa o diccionario asociativo , compuesto por pares clave-valor, de modo que cada clave aparece como máximo una vez en el contenedor. La clave se usa para encontrar el valor, el objeto, si está almacenado en el contenedor. Los contenedores asociativos se utilizan en lenguajes de programación como plantillas de clases.
Los tipos de datos abstractos de contenedor incluyen:
- Colas FIFO
- Pilas LIFO
- Colas de prioridad
- Tablas de búsqueda (LUT)
- Estructuras de datos asociadas a claves
Las estructuras de datos comunes que se utilizan para implementar estos tipos abstractos incluyen:
- Matrices y sus derivados
- Listas vinculadas
- Árboles de búsqueda binaria (BST), en particular BST de autoequilibrio
- Tablas hash
Contenedores gráficos
Los kits de herramientas de widgets también usan contenedores, que son widgets especiales para agrupar otros widgets, como ventanas , paneles . Aparte de sus propiedades gráficas, tienen el mismo tipo de comportamiento que las clases contenedoras, ya que mantienen una lista de sus widgets secundarios y permiten agregar, eliminar o recuperar widgets entre sus hijos.
Ver también
Referencias
- ^ Paul E. Black (ed.), Entrada para la estructura de datos en el Diccionario de algoritmos y estructuras de datos . Instituto Nacional de Estándares y Tecnología de EE. UU . 15 de diciembre de 2004. Consultado el 4 de octubre de 2011.
- ^ Estructura de datos de entradaen la entrada en línea de Encyclopædia Britannica (2009)Consultado el 4 de octubre de 2011.