Clases de matriz, lista y mapa
Para controlar los agregados de datos, la biblioteca de clases proporciona un grupo de clases de colección (matrices, listas y mapas) que pueden contener una variedad de tipos predefinidos y de objeto. Las colecciones tienen un tamaño dinámico. Estas clases se pueden usar en cualquier programa, tanto si se escriben para Windows como si no. Sin embargo, son más útiles para implementar las estructuras de datos que definen las clases de documento en el marco de trabajo de la aplicación. Puede derivar fácilmente clases de colección especializadas de estas clases, o puede crearlas tomando como base las clases de plantilla. Para obtener más información sobre estos enfoques, consulte el artículo Colecciones. Para una lista de las clases de colecciones de plantillas, consulte el artículo Clases de plantilla para matrices, listas y mapas.
Las matrices son estructuras de datos unidimensionales que se almacenan de forma contigua en la memoria. Admiten acceso aleatorio muy rápido, ya que la dirección de memoria de cualquier elemento determinado se puede calcular multiplicando el índice del elemento por el tamaño de un elemento y agregando el resultado a la dirección base de la matriz. Sin embargo, las matrices son muy costosas si se tienen que insertar elementos en la matriz, ya que tiene que moverse toda la matriz después del elemento insertado para insertar el elemento. Las matrices pueden crecer y reducirse según sea necesario.
Las listas son similares a las matrices, pero se almacenan de forma muy diferente. Cada elemento de una lista también incluye un puntero a los elementos anterior y posterior, lo que lo convierte en una lista vinculada doblemente. Es muy rápido agregar o eliminar elementos porque hacerlo solo implica cambiar algunos punteros. Sin embargo, la búsqueda en una lista puede ser costosa, ya que todas las búsquedas deben comenzar en uno de los extremos de la lista.
Los mapas relacionan un valor de clave con un valor de datos. Por ejemplo, la clave de un mapa podría ser una cadena y los datos, un puntero a una lista. Pediría al mapa que le proporcione el puntero asociado a una cadena determinada. Las búsquedas en mapas son rápidas porque los mapas usan tablas hash para búsquedas de claves. Agregar y eliminar elementos también es rápido. A menudo, los mapas se usan con otras estructuras de datos como índices auxiliares. MFC usa un tipo especial de mapa denominado mapa de mensajes para asignar mensajes de Windows a un puntero de la función de controlador de ese mensaje.