MickyOr

Mapas

Jul 5th, 2016
162
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. libreria: map
  2.  
  3.     -   Declaracion y uso
  4.  
  5. map<tipo de dato, tipo de dato> nombre;
  6. ej:
  7. map<int, int> m1;
  8. map<char, bool> m2;
  9. map<vector<string>, double> m3;
  10.  
  11. El primer tipo de dato se llama llave, el segundo es el valor.
  12. Un mapa asocia la llave al valor.
  13. Ej:
  14.  
  15. map<string, int> m;
  16. m["abc"] = 2;
  17. m["qwe"] = 3;
  18. m["asde"] = 7;
  19. cout<<m["abc"]; // imprime 2
  20. cout<<m["zxc"]; // imprime 0. Como a la llave "zxc" no se le ha asociado ningun valor, m["zxc"] devuelve NULL o en este caso, 0; si el valor fuera de tipo string devolveria "", si fuera bool, false, etc...
  21.  
  22.     -   Recorrer un mapa
  23. Para esto necesitamos usar iteradores, a menos que guardemos los valores de las llaves y accedamos a los elementos uno por uno, esto es porque un mapa no se lo puede ver como una serie de casillas como a un arreglo, un mapa es como un arbol binario https://es.wikipedia.org/wiki/%C3%81rbol_binario
  24.  
  25. //para esto usaremos el anterior ejemplo
  26. map<string, int>::iterator it; // para declarar un iterador hay que poner los mismos tipos de dato de la llave y valor del mapa que queremos recorrer. En este caso el nombre del iterador es it, puede ser cualquier nombre.
  27.  
  28. for (it = m.begin(); it != m.end(); it++) // un iterador no tiene un valor numerico, it++ no es igual a it = it + 1, it++ hace que el iterador vaya a la siguiente posicion, no que aumente en 1
  29. {
  30.     cout<<it->first<<" "; // imprime la llave
  31.     cout<<it->second<<endl; // imprime el valor
  32. }
  33. Esto imprime:
  34. abc 2
  35. asde 7
  36. qwe 3
  37. Un mapa se ordena segun la llave, se puede re-ordenar el mapa segun el valor pero es complicado y honestamente si creen que necesitan hacer eso para resolver un problema, probablemente esa solucion este mal. http://stackoverflow.com/questions/5056645/sorting-stdmap-using-value
  38.  
  39. cout<<m.size(); // imprime 3, el tamaño del mapa
  40. m.clear(); // elimina todos los valores del mapa
RAW Paste Data