Mapa (C++)

La versión actual de la página aún no ha sido revisada por colaboradores experimentados y puede diferir significativamente de la versión revisada el 7 de enero de 2021; las comprobaciones requieren 2 ediciones .

map- una clase de plantilla estándar de la biblioteca del lenguaje de programación C++, diseñada para implementar la abstracción de visualización en forma de un contenedor asociativo ordenado . Su declaración se encuentra en el espacio de nombres del archivo de encabezado <mapa> de la biblioteca STL [1] [2] [3] . En el contexto del acceso a sus elementos, una clase se considera como una matriz asociativa , en la que los valores clave desempeñan el papel de índices [4] , lo que permite establecer una analogía con un diccionario o una guía telefónica [ 5] . stdmap

Descripción

Los elementos de una clase mapson pares de claves y sus correspondientes valores. El almacenamiento de elementos de clase se mapimplementa de forma ordenada en función de un criterio de clasificación que se aplica por valores clave. De forma predeterminada, el criterio de clasificación lo establece el operador operator< [6] . A diferencia de un contenedor set, una clase mapproporciona a su usuario operator [][1] . Para controlar la gestión de la memoria, es posible conectar versiones personalizadas de los asignadores de memoria . Para la implementación práctica de la clase mapse suelen utilizar árboles binarios de búsqueda [7] .

Funcionalidad básica

Los métodos de clase estándar mappermiten al usuario realizar operaciones de búsqueda, inserción y recorrido en un contenedor de forma unificada. Para muchos de ellos, se proporciona interacción con iteradores regulares de la biblioteca STL [8] .

Debido a la estructura ordenada del contenedor map, la búsqueda o inserción del elemento deseado se puede realizar en tiempo logarítmico [9] .

Nombre Funciones
size() Devuelve el número de elementos en el contenedor.
empty() Devoluciones truesi el contenedor está vacío
find(k) Devuelve un iterador que apunta al valor correspondiente al valor de la clave k. Si no existe tal valor en el contenedor, se devuelve un iterador.end
operator[k] Devuelve una referencia al valor correspondiente a la clave k. Si dicha clave no existe, entonces se crea.
insert(pair(k,v)) Inserta un par en el contenedor (k,v), devolviendo la dirección de su posición
erase(k) Elimina el elemento con la llave del contenedor.k
erase(p) Elimina del contenedor el elemento señalado por el iteradorp
begin() Devuelve un iterador al principio del contenedor.
end() Devuelve un iterador al final del contenedor.

Notas

  1. 1 2 Gregorie, 2018 , mapa y multimapa, p. 518.
  2. Van Weert, Gregorie, 2016 , Contenedores asociativos ordenados, p. 71.
  3. Goodrich, Tamassia, Mount, 2011 , The STL map Class, p. 372.
  4. Litvinenko, 2005 , Mapa de contenedores, Multimap, p. 198.
  5. Horton, Van Weert, 2018 , Mapas, pág. 730.
  6. Litvinenko, 2005 , Mapa de contenedores, Multimap, p. 195.
  7. Class template std:map Archivado el 30 de enero de 2020 en Wayback Machine www.cplusplus.com
  8. Goodrich, Tamassia, Mount, 2011 , The STL map Class, p. 372, 373.
  9. Posch, Galowicz, 2018 , Conociendo la nueva semántica de sugerencia de inserción de std::map:insert, p. 524.

Fuentes