81 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
		
		
			
		
	
	
			81 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Markdown
		
	
	
	
	
	
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								title: Map
							 | 
						||
| 
								 | 
							
								localeTitle: Mapa
							 | 
						||
| 
								 | 
							
								---
							 | 
						||
| 
								 | 
							
								## Introducción del mapa
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`map` es un contenedor asociativo que almacena elementos en un par clave-valor. Al igual que en `Java` tenemos colección, array asociativo en PHP y así sucesivamente.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Beneficios de usar el mapa
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								*   Almacena solo claves únicas y eso también en orden clasificado basado en sus criterios de clasificación asignados.
							 | 
						||
| 
								 | 
							
								*   Como las claves están ordenadas, la búsqueda de elementos en el mapa a través de la clave es muy rápida, es decir, toma tiempo logarítmico.
							 | 
						||
| 
								 | 
							
								*   En el `map` solo habrá un valor adjunto con cada tecla.
							 | 
						||
| 
								 | 
							
								*   `map` puede ser utilizado como matrices asociativas.
							 | 
						||
| 
								 | 
							
								*   Podría implementarse utilizando árboles binarios equilibrados.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Aquí hay un ejemplo:
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```c++
							 | 
						||
| 
								 | 
							
								#include <iostream> 
							 | 
						||
| 
								 | 
							
								 #include <map> 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 using namespace std; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								 int main (){ 
							 | 
						||
| 
								 | 
							
								  map<char,int> first; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  //initializing 
							 | 
						||
| 
								 | 
							
								  first['a']=10; 
							 | 
						||
| 
								 | 
							
								  first['b']=20; 
							 | 
						||
| 
								 | 
							
								  first['c']=30; 
							 | 
						||
| 
								 | 
							
								  first['d']=40; 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								   map<char, int>::iterator it; 
							 | 
						||
| 
								 | 
							
								   for(it=first.begin(); it!=first.end(); ++it){ 
							 | 
						||
| 
								 | 
							
								      cout << it->first << " => " << it->second << '\n'; 
							 | 
						||
| 
								 | 
							
								   } 
							 | 
						||
| 
								 | 
							
								 
							 | 
						||
| 
								 | 
							
								  return 0; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Salida:
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								a => 10 
							 | 
						||
| 
								 | 
							
								 b => 20 
							 | 
						||
| 
								 | 
							
								 c => 30 
							 | 
						||
| 
								 | 
							
								 d => 40 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Creando objeto de mapa
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`map<string, int> myMap;`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Inserción
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Insertando datos con la función miembro insertada.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```c++
							 | 
						||
| 
								 | 
							
								myMap.insert(make_pair("earth", 1)); 
							 | 
						||
| 
								 | 
							
								 myMap.insert(make_pair("moon", 2)); 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								También podemos insertar datos en std :: map utilizando el operador \[\], es decir
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								`myMap["sun"] = 3;`
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								## Accediendo a los elementos del mapa.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Para acceder a los elementos del mapa, debe crear un iterador para él. Aquí hay un ejemplo como se dijo antes.
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								```c++
							 | 
						||
| 
								 | 
							
								map<char, int>::iterator it; 
							 | 
						||
| 
								 | 
							
								 for(it=first.begin(); it!=first.end(); ++it){ 
							 | 
						||
| 
								 | 
							
								  cout << it->first << " => " << it->second << '\n'; 
							 | 
						||
| 
								 | 
							
								 } 
							 | 
						||
| 
								 | 
							
								```
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								Aquí puedes aprender más sobre el mapa: [cpluspluc\_map](http://www.cplusplus.com/reference/map/map/map/)
							 | 
						||
| 
								 | 
							
								
							 | 
						||
| 
								 | 
							
								NB: Todos los códigos en el ejemplo están en versión C ++ 11. Puedes aprender más sobre la versión de C ++ [aquí](http://en.cppreference.com/w/cpp/compiler_support)
							 |