Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Este artículo contiene información detallada diseñada para ayudarle a elegir una clase de colección para sus necesidades específicas de la aplicación.
La elección de una clase de colección depende de varios factores, entre los que se incluyen:
Las características de la forma de clase: orden, indexación y rendimiento, como se muestra en la tabla Características de formas de colección más adelante en este tema
Si la clase usa plantillas de C++
Si los elementos almacenados en la colección se pueden serializar
Si los elementos almacenados en la colección se pueden volcar para diagnósticos
Si la colección es segura para tipos
En la tabla siguiente, Características de formas de colección, se resumen las características de las formas de colección disponibles.
Las columnas 2 y 3 describen las características de ordenación y acceso de cada forma. En la tabla, el término "ordenado" significa que el orden en el que se insertan o eliminan los elementos determina su orden en la colección; no significa que los elementos se ordenan por su contenido. El término “indexado” significa que los elementos de la colección se pueden recuperar mediante un índice entero, como los elementos de una matriz estándar.
Las columnas 4 y 5 describen el rendimiento de cada forma. En aplicaciones que requieren muchas inserciones en la colección, la velocidad de inserción puede ser especialmente importante; para otras aplicaciones, puede ser más importante la velocidad de búsqueda.
En la columna 6 se describe si cada forma permite elementos duplicados.
Características de la forma de colección
Forma | Pedido | .Indexado | Insertar un elemento | Buscar el elemento especificado | Elementos duplicados |
---|---|---|---|---|---|
Lista | Sí | No | Rápido | Lento | Sí |
Arreglo | Sí | Por int | Lento | Lento | Sí |
Mapa | No | Por clave | Rápido | Rápido | No (claves) Sí (valores) |
En la tabla siguiente, Características de las clases de colección MFC, se resumen otras características importantes de clases de colección MFC específicas como guía para la selección. Su elección puede depender de si la clase se basa en plantillas de C++, si sus elementos se pueden serializar a través del mecanismo de serialización de documentos de MFC, si sus elementos se pueden volcar a través del mecanismo de volcado de diagnóstico de MFC o si la clase es segura para tipos, es decir, si puede garantizar el tipo de elementos almacenados en una colección y recuperada de una colección basada en la clase .
Características de las clases de colección MFC
Clase | Usa C++ Plantillas |
Puede ser Serializado |
Puede ser Dejó |
Es seguro para tipos |
---|---|---|---|---|
CArray |
Sí | Sí 1 | Sí 1 | No |
CByteArray |
No | Sí | Sí | Sí 3 |
CDWordArray |
No | Sí | Sí | Sí 3 |
CList |
Sí | Sí 1 | Sí 1 | No |
CMap |
Sí | Sí 1 | Sí 1 | No |
CMapPtrToPtr |
No | No | Sí | No |
CMapPtrToWord |
No | No | Sí | No |
CMapStringToOb |
No | Sí | Sí | No |
CMapStringToPtr |
No | No | Sí | No |
CMapStringToString |
No | Sí | Sí | Sí 3 |
CMapWordToOb |
No | Sí | Sí | No |
CMapWordToPtr |
No | No | Sí | No |
CObArray |
No | Sí | Sí | No |
CObList |
No | Sí | Sí | No |
CPtrArray |
No | No | Sí | No |
CPtrList |
No | No | Sí | No |
CStringArray |
No | Sí | Sí | Sí 3 |
CStringList |
No | Sí | Sí | Sí 3 |
CTypedPtrArray |
Sí | Depende de 2 | Sí | Sí |
CTypedPtrList |
Sí | Depende de 2 | Sí | Sí |
CTypedPtrMap |
Sí | Depende de 2 | Sí | Sí |
CUIntArray |
No | No | Sí | Sí 3 |
CWordArray |
No | Sí | Sí | Sí 3 |
Para serializar, debe llamar explícitamente a la función del objeto de
Serialize
colección; para volcar, debe llamar explícitamente a suDump
función. No puede usar el formularioar << collObj
para serializar o el formulariodmp
<< collObj
que se va a volcar.La serialización depende del tipo de colección subyacente. Por ejemplo, si una matriz de punteros con tipo se basa en
CObArray
, se puede serializar; si se basa enCPtrArray
, no se puede serializar. En general, las clases "Ptr" no se pueden serializar.Si se marca como Sí en esta columna, una clase de colección nontemplate es segura para tipos siempre que la use según lo previsto. Por ejemplo, si almacena bytes en ,
CByteArray
la matriz es segura para tipos. Pero si lo usas para almacenar caracteres, su seguridad de tipo es menor.
Consulte también
Colecciones
clases deTemplate-Based
Cómo: Crear una colección de Type-Safe
Acceso a todos los miembros de una colección