Herramientas de usuario

Herramientas del sitio


cpp-avanzado:map

¡Esta es una revisión vieja del documento!


Diccionarios (Map)

Motivación

Ya discutimos la importancia de poder representar conjuntos de manera que insertar, remover y buscar un elemento sean operaciones efectuadas rápidamente. Sin embargo, un conjunto no siempre es suficiente para nuestras necesidades.

Por ejemplo, supongamos que tenemos un diccionario en el que cada palabra válida tiene una definición y un usuario puede ir agregando y quitando palabras junto con la definición de cada una. Además, en cualquier momento nos pueden pedir que imprimamos la definición de una palabra. Queremos que todas estas operaciones sean realizadas rápidamente.

Si bien es posible modelar esto como un conjunto de pares (palabra, definición), es poco descriptivo y sería mejor tratar de usar una estructura pensada para este uso en particular. Como este problema es tan importante, la estructura que lo modela se llama diccionario. Para generalizar los nombres, llamaremos clave a la palabra a definir y valor a su definición. Así, para cada clave existe un valor asociado a ella. Por ejemplo, para la clave árbol, el diccionario nos devolverá el valor “Planta perenne, de tronco leñoso y elevado, que se ramifica a cierta altura del suelo.”

La estructura que modela diccionarios en C++ se llama map. Debido a su uso tan extendido, es muy usual decir que la clave casa “mappea” al valor “Planta perenne, de tronco leñoso y elevado, que se ramifica a cierta altura del suelo.”.

Los diccionarios son usados en varios contextos. Por ejemplo, en un texto enorme podemos querer saber cuántas veces aparece cada palabra en él. Podemos pensar en un diccionario en el que cada palabra que aparezca en el texto sea una clave y su número de repeticiones sea el valor. Así, a medida que vayamos recorriendo el texto iremos agregando las palabras nuevas (con cantidad de repeticiones igual a 1) e iremos incrementando la cantidad de repeticiones de las palabras que ya aparezcan.

Implementación en C++

Si bien tal vez no asociemos la palabra inglesa map con este significado, es importante notar que en computación se utiliza la palabra map para significar “asociar una clave a un valor”. Para poder utilizar maps en C++ debemos incluir su biblioteca así: #include <map>.

Crear un diccionario

Para crear el map debemos indicar de qué tipo será la clave y de qué tipo será el valor.

cpp-avanzado/map.1486757363.txt.gz · Última modificación: 2017/02/10 20:09 por melanie