c++ - mapas - Almacenando el mapa estándar en el mapa
mapas en c++ (4)
Tratar:
std::map< std::string, std::map<std::string, std::string> > someStorage;
someStorage["Hi"]["This Is Layer Two"] = "Value";
Tengo que almacenar std :: map como valor en std :: map
std::map< std::string, std::map<std::string, std::string> > someStorage;
¿Cómo insertar en el segundo mapa (interior)? Lo intenté con:
someStorage.insert( std::make_pair("key", std::make_pair("key2", "value2")) );
Pero esto arroja muchos errores. Que pasa
Un mapa tiene un método de inserción que acepta un par clave / valor. Su clave es de tipo cadena, por lo que no hay problema, pero su valor no es de tipo de par (que genera) sino de tipo map. Por lo tanto, debe almacenar un mapa completo como su valor o cambiar la definición de mapa inicial para aceptar un par como valor.
//Prueba esto:
std::map< std::string, std::map<std::string, std::string> > myMap;
myMap["key one"]["Key Two"] = "Value";
myMap["Hello"]["my name is"] = "Value";
// Para imprimir el mapa:
for( map<string,map<string,string> >::const_iterator ptr=myMap.begin();ptr!=myMap.end(); ptr++) {
cout << ptr->first << "/n";
for( map<string,string>::const_iterator eptr=ptr->second.begin();eptr!=ptr->second.end(); eptr++){
cout << eptr->first << " " << eptr->second << endl;
}
}
someStorage["key"].insert(std::make_pair("key2", "value2")));
Si también desea utilizar la inserción en el mapa exterior, aquí hay una forma de hacerlo
std::map<std::string, std::string> inner;
inner.insert(std::make_pair("key2", "value2"));
someStorage.insert(std::make_pair("key", inner));