¿Estoy en lo cierto al suponer que añadir/eliminar elementos en un std :: map no afecta a los demás elementos (es decir, hacer que se reubiquen en la memoria) y que la siguiente es segura:C++ Almacenamiento de referencias a valores en std :: map
miré en varios sitios con información sobre el contenedor, pero sólo se enteraron de los casos en los que se han invalidado iteradores, que ya conozco ...
std::map<std::string,std::string> map;
PopulateMap(map);
std::string &a= map["x"];
AddMoreData(map);
RemoveRandomKeysExceptX(map);
map["x"] = "foo";
std::cout << a << " " << map["x"] << std::endl;//prints "foo foo"
a = "bar";
std::cout << a << " " << map["x"] << std::endl;//prints "bar bar"
que probé un poco de código similar sobre VC9 , lo que parece funcionar, sin embargo, eso no significa que no haya tenido suerte o que no varíe en los compiladores.
No estoy seguro de por qué borró su respuesta nadeen, era correcta por lo que pude ver. – CiscoIPPhone
La respuesta de naveen fue sobre iteradores, que esta pregunta no es –
También borré mi respuesta, porque en la segunda lectura no tengo muy claro cuál es la pregunta real. –