Colecciones
La biblioteca MFC (Microsoft Foundation Class) proporciona clases de colección para administrar grupos de objetos. Estas clases son de dos tipos:
Nota:
Si el código ya usa clases de colección no creadas a partir de plantillas, puede seguir utilizándolas. Si escribe nuevas clases de colección con seguridad de tipos para sus propios tipos de datos, se recomienda que use las clases más recientes basadas en plantillas.
Formas de colección
Una clase de colección se caracteriza por su "forma" y por los tipos de sus elementos. La forma hace referencia a la forma en que la colección organiza y almacena los objetos. MFC proporciona tres formas básicas de colección: listas, matrices y mapas (también conocidos como diccionarios). Puede elegir la forma de colección más adecuada para su problema de programación concreto.
Cada una de las tres formas de colección proporcionadas se describe brevemente más adelante en este tema. Para comparar las características de las formas y ayudarle a decidir cuál es mejor para su programa, consulte Recomendaciones para elegir una clase de colección.
List
La clase List proporciona una lista ordenada y no indexada de elementos, implementada como una lista vinculada doblemente. Una lista tiene una "cabeza" y una "cola", y agregar o quitar elementos de la cabeza o la cola, o insertarlos en el medio o eliminarlos, es muy rápido.
Matriz
La clase array proporciona una matriz de objetos redimensionada, ordenada e indexada con enteros de forma dinámica.
Mapa (también conocido como diccionario)
Un mapa es una colección que asocia un objeto de clave a un objeto de valor.
Clases de colección basadas en plantillas
La manera más fácil de implementar una colección con seguridad de tipos que contenga objetos de cualquier tipo es usar una de las clases basadas en plantillas de MFC. Para obtener ejemplos de estas clases, consulte el ejemplo de MFC COLLECT.
En la tabla siguiente se enumeran las clases de colección basadas en plantillas de MFC:
Clases de plantillas de colección
Contenido de las colecciones | Matrices | Listas | Maps |
---|---|---|---|
Colecciones de objetos de cualquier tipo | CArray |
CList |
CMap |
Colecciones de punteros a objetos de cualquier tipo | CTypedPtrArray |
CTypedPtrList |
CTypedPtrMap |
Clases de colección no basadas en plantillas
Si la aplicación ya usa clases no creadas a partir de plantillas de MFC, puede seguir utilizándolas. Sin embargo, para las nuevas colecciones, se recomienda usar las clases basadas en plantillas. En la tabla siguiente se enumeran las clases de colección de MFC que no se basan en plantillas.
Clases de colección que no son plantillas
Matrices | Listas | Maps |
---|---|---|
CObArray |
CObList |
CMapPtrToWord |
CByteArray |
CPtrList |
CMapPtrToPtr |
CDWordArray |
CStringList |
CMapStringToOb |
CPtrArray |
CMapStringToPtr |
|
CStringArray |
CMapStringToString |
|
CWordArray |
CMapWordToOb |
|
CUIntArray |
CMapWordToPtr |
La tabla Características de clases de colección de MFC de Recomendaciones para elegir una clase de colección describe las clases de colección de MFC en relación con estas características (distintas de la forma):
Si la clase usa plantillas de C++
Si los elementos almacenados en la colección pueden serializarse
Si los elementos almacenados en la colección pueden volcarse para diagnósticos
Si la colección tiene seguridad de tipos