Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- libreria: map
- - Declaracion y uso
- map<tipo de dato, tipo de dato> nombre;
- ej:
- map<int, int> m1;
- map<char, bool> m2;
- map<vector<string>, double> m3;
- El primer tipo de dato se llama llave, el segundo es el valor.
- Un mapa asocia la llave al valor.
- Ej:
- map<string, int> m;
- m["abc"] = 2;
- m["qwe"] = 3;
- m["asde"] = 7;
- cout<<m["abc"]; // imprime 2
- 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...
- - Recorrer un mapa
- 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
- //para esto usaremos el anterior ejemplo
- 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.
- 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
- {
- cout<<it->first<<" "; // imprime la llave
- cout<<it->second<<endl; // imprime el valor
- }
- Esto imprime:
- abc 2
- asde 7
- qwe 3
- 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
- cout<<m.size(); // imprime 3, el tamaño del mapa
- m.clear(); // elimina todos los valores del mapa
Add Comment
Please, Sign In to add comment