Share via


Contenedores STL

La biblioteca de (STL) plantillas estándar proporciona varios contenedores para almacenar las colecciones de objetos relacionados.Los contenedores son todas las clases de plantilla, ya que permite especificar qué objetos se permiten en los contenedores.Este tema proporciona información general sobre los contenedores STL para ayudarle a decidir qué contenedor es mejor para necesidades.

hay dos bibliotecas de STL a elegir de: natural STL y STL/CLR.Para obtener más información sobre STL/CLR, vea referencia de la biblioteca de STL/CLR.

Los contenedores en STL pueden dividirse en tres categorías, contenedores de secuencias, contenedores asociativos, y adaptadores del contenedor.Estas categorías, y colecciones que pertenecen a cada categoría, se resumen aquí.Información más detallada se puede encontrar en la documentación de referencia para los contenedores.

Contenedores de secuencias

Los contenedores de la secuencia se mantiene el orden original de los elementos incrustados.Esto permite especificar dónde insertar el elemento en el contenedor.

El contenedor de deque (cola de dos extremos) permite inserciones y eliminaciones rápidas al principio y al final del contenedor.También puede tener acceso de forma aleatoria a cualquier elemento rápidamente.

El contenedor de list permite inserciones y eliminaciones rápidas en cualquier parte del contenedor, pero no puede tener acceso de forma aleatoria a un elemento en el contenedor.

El contenedor de vector se comporta como una matriz, pero aumentará automáticamente según sea necesario.

Para obtener más información sobre los contenedores de secuencias, vea la tabla siguiente:

Contenedor

natural STL

STL/CLR

deque

deque Class

deque (STL/CLR)

list

list Class

list (STL/CLR)

vector

vector Class

vector (STL/CLR)

contenedores asociativos

La característica de definición de contenedores asociativos es que los elementos se incrustan en un orden predefinido, como ascendente ordenada.

los contenedores asociativos se pueden agrupar en dos subconjuntos: mapas y conjuntos.map, a veces un diccionario, consta de un par clave-valor.La clave se utiliza para ordenar la secuencia, y el valor es de algún modo asociado con esa clave.Por ejemplo, map podría contener las teclas que representan cada palabra única en un texto y valores que representan el número de veces que word aparece en el texto.set es simplemente un contenedor ascendente de elementos únicos.

map y set permiten sólo una instancia de una clave o el elemento en el contenedor.Si varias instancias de elementos se requiere, utilice multimap o multiset.

Los mapas y conjuntos admiten iteradores bidireccionales.Para obtener más información sobre iteradores, vea Iteradores.

Mientras no oficialmente la parte de la norma de STL, hash_map y hash_set se utilizan mejorar buscar veces.Estos contenedores almacenan sus elementos como una tabla hash, con cada entrada de tabla que contiene una lista vinculada bidireccional de elementos.Para garantizar que los tiempos de búsqueda más rápidos, asegúrese de que el algoritmo hash para los elementos devuelve valores hash uniformemente distribuidos.

Para obtener más información sobre los contenedores asociativos, vea la tabla siguiente:

Contenedor

natural STL

STL/CLR

hash_map

hash_map Class

hash_map (STL/CLR)

hash_multimap

hash_multimap Class

hash_multimap (STL/CLR)

hash_multiset

hash_multiset Class

hash_multiset (STL/CLR)

hash_set

hash_set Class

hash_set (STL/CLR)

map

map Class

map (STL/CLR)

multimap

multimap Class

multimap (STL/CLR)

multiset

multiset Class

conjunto múltiple (STL/CLR)

set

set Class

set (STL/CLR)

Adaptadores de contenedor

Los adaptadores de contenedor simplemente son variaciones de contenedores anteriores.Los adaptadores de contenedor no admiten iteradores.

El contenedor de priority_queue organizó tales que el elemento con el valor máximo es siempre primero en la cola.

El contenedor de queue sigue la semántica de primero en entrar, primero en salir (primero en, primero en salir).El primer elemento insertado (insertado) en la cola es el primero que se quitará (sacado).

El contenedor de stack sigue la semántica LIFO (último en, primero en salir).El último elemento que se va a insertar (insertado) de la pila es el primer elemento que se va a quitar (sacado).

Puesto que los adaptadores de contenedor no admiten iteradores, no se pueden usar con los algoritmos de STL.Para obtener más información sobre algoritmos, vea Algoritmos.

Para obtener más información sobre los adaptadores de contenedor, vea la tabla siguiente:

Contenedor

natural STL

STL/CLR

priority_queue

priority_queue Class

priority_queue (STL/CLR)

queue

queue Class

queue (STL/CLR)

stack

stack Class

stack (STL/CLR)

requisitos para los elementos contenedor

Los elementos insertados en un contenedor de STL pueden ser de cualquier tipo de objeto que proporciona un constructor público de copia, destructor público y, un operador de asignación público.Un destructor no puede producir una excepción.Además, los contenedores asociativos como set y map deben tener un operador de comparación público definido, que es operator< de forma predeterminada.Algunas operaciones en los contenedores también podrían requerir un constructor público predeterminado y un operador de equivalencia público.

Elementos contenedores de acceso

Los elementos de contenedores permiten el acceso mediante iteradores.Para obtener más información, vea Iteradores.

[!NOTA]

También puede utilizar para cada, en para recorrer en iteración colecciones STL.Para obtener más información, vea Cómo: Recorra la colección de Compilaciones STL con para cada.

Vea también

Referencia

Biblioteca de plantillas estándar

<sample container>