Herramientas de usuario

Herramientas del sitio


cpp-avanzado:map

Diferencias

Muestra las diferencias entre dos versiones de la página.

Enlace a la vista de comparación

Ambos lados, revisión anterior Revisión previa
Próxima revisión
Revisión previa
cpp-avanzado:map [2017/02/10 20:09]
melanie
cpp-avanzado:map [2017/10/29 19:48] (actual)
santo
Línea 14: Línea 14:
 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."//​. 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+Los diccionarios son usados en varios contextos, no solo en el que dio origen a su nombre. 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 hayan aparecido anteriormente
  
 ===== Implementación en C++ ===== ===== Implementación en C++ =====
Línea 22: Línea 22:
 ==== Crear un diccionario ==== ==== Crear un diccionario ====
  
-Para crear el ''​map''​ debemos indicar de qué tipo será la clave y de qué tipo será el valor.+Para crear el ''​map''​ debemos indicar de qué tipo será la clave y de qué tipo será el valor. Usaremos de ahora en más el segundo ejemplo visto, en el que la clave será una palabra y su valor la cantidad de repeticiones de la misma.
  
 +<code cpp>
 +map<​string,​ int> dicc;
 +</​code>​
  
 +==== Asignar valor a una clave ====
  
 +Insertar un par //(clave, valor)// en un map es lo mismo que en un array.
 +
 +<code cpp>
 +dicc["​arbol"​] = 1;
 +</​code>​
 +
 +Este código agrega la clave ''​arbol''​ con valor 1. Notar que si antes existía esta clave con otro valor, dicho valor se sobreescribirá. Más claramente,
 +
 +<code cpp>
 +dicc["​arbol"​] = 2;
 +//...
 +dicc["​arbol"​] = 1;
 +</​code>​
 +
 +sólo guardará la asociación entre ''​arbol''​ y el número 1, y se olvidará que alguna vez estuvo asociado al número 2.
 +
 +Una propiedad interesante de los map es que si la clave no existe, se la inicializa con algún valor default. Por ejemplo, en el caso de los enteros, se inicializa el valor en cero. Esto quiere decir que el siguiente código tiene sentido aún si la clave ''​casa''​ no existía antes.
 +
 +<code cpp>
 +dicc["​casa"​]++;​
 +</​code>​
 +
 +Si la clave ''​casa''​ existía anteriormente,​ simplemente incrementará en uno la cantidad anterior. Si la clave ''​casa''​ no existía, se creará con 0 repeticiones y luego se incrementará en 1, dejando la clave ''​casa''​ con un valor asociado de 1. ¡Usen esta propiedad con cuidado! Puede llevar a errores en el programa si no se usa adecuadamente.
 +
 +==== Remover una clave y su valor asociado ====
 +FIXME
 +==== Buscar una clave ====
 +FIXME
 +
 +==== Buscar la clave más cercana a cierto elemento =====
 +FIXME
cpp-avanzado/map.1486757363.txt.gz · Última modificación: 2017/02/10 20:09 por melanie