Ho ragione nell'assumere che l'aggiunta/rimozione di elementi a una std :: map non influenzi gli altri elementi (cioè li facciano riposizionare in memoria) e in modo che quanto segue è sicuro:C++ Memorizzare i riferimenti ai valori in std :: map
ho guardato vari siti con informazioni sul contenitore, ma solo scoperto sui casi in cui vengono invalidate iteratori, che so già ...
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"
ho provato un po 'di codice simile a VC9 , che sembra funzionare comunque, ciò non significa che non sono stato fortunato o che non varia da un compilatore all'altro.
Non sono sicuro del motivo per cui hai cancellato la risposta, è stato corretto per quanto ho potuto vedere. – CiscoIPPhone
La risposta di naveen riguardava gli iteratori, che questa domanda non è –
Ho anche cancellato la mia risposta, perché in seconda lettura non sono completamente chiaro quale sia la vera domanda. –