values mapas example c++ map insert std

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));