Recommendations for Choosing a Collection (Clase)
Este artículo contiene información detallada diseñada para ayudarle a elegir una clase de colección para la aplicación determinada necesita.
La elección de una clase de colección depende de varios factores, incluyendo:
Las características de la forma de clase: orden, indización, y rendimiento, como se muestra en la tabla de Características de la colección más adelante en este tema
Si la clase utiliza plantillas de C++
Si los elementos almacenados en la colección pueden ser serializados
Si los elementos almacenados en la colección se puede volcar para diagnósticos
Si la colección es tipo-segura
La tabla siguiente, Características de la colección, resume las características de las formas disponibles de la colección.
Las columnas 2 y 3 describen cada forma de ordenación y tienen acceso a características. En la tabla, el término “orden” significa que el orden en que se insertan y se eliminan los elementos determina el orden en la colección; no significa que los elementos se ordenan en su contenido. El término “indizó” significa que los elementos de la colección se pueden recuperar mediante un índice entero, como 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; en otras aplicaciones, la velocidad de búsqueda puede ser más importante.
La columna 6 describe si cada forma permite elementos duplicados.
Características de la colección
Forma |
¿Secuenciado? |
¿Indizado? |
Inserte un elemento |
Buscar el elemento especificado |
¿Elementos duplicados? |
---|---|---|---|---|---|
Lista |
Sí |
No |
Rápido |
Lento |
Sí |
Matriz |
Sí |
Por int |
Lento |
Lento |
Sí |
Mapa |
No |
Por clave |
Rápido |
Rápido |
Ningún Sí (keys) (valores) |
La tabla siguiente, Características de las clases de colección MFC, resume otras características importantes de las clases de colección específicas de MFC como guía para la selección. La opción puede depender de si la clase está basada en las plantillas de C++, si los elementos se pueden serializar mediante el mecanismo de serialización de documento de MFC, si sus elementos se puede volcar mediante el mecanismo que vuelca de diagnóstico de MFC, o si la clase es tipo- segura (es decir, si puede garantizar el tipo de elementos almacenados en y recuperados de una colección basada en la clase.
Características de las clases de colección MFC
Clase |
Utiliza C++ plantillas |
Puede ser serialized |
Puede ser volcado |
Is con seguridad de 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 2 |
Sí |
Sí |
CTypedPtrList |
Sí |
Depende 2 |
Sí |
Sí |
CTypedPtrMap |
Sí |
Depende 2 |
Sí |
Sí |
CUIntArray |
No |
No |
Sí |
Sí 3 |
CWordArray |
No |
Sí |
Sí |
Sí 3 |
1. Para serializar, debe llamar explícitamente a la función de Serialize del objeto de colección; para volcar, debe llamar explícitamente a la función de Dump . No puede utilizar la forma ar << collObj para serializar o el formulario dmp << collObj a volcar.
2. Serializability depende del tipo de colección subyacente. Por ejemplo, si una matriz de tipo puntero se basa en CObArray, es serializable; si se basa en CPtrArray, no es serializable. Las clases “PTR” no se pueden serializar normalmente.
3. Si el propio marcado en esta columna, una clase de colección de segunda es tipo- seguro proporcionado se utiliza como se espera. Por ejemplo, si almacena bytes en CByteArray, la matriz es tipo- seguro. Pero si se utiliza para almacenar los caracteres, la seguridad de tipos es menos segura.
Vea también
Tareas
Acceso a todos los miembros de una colección