std::map への要素の追加/削除は他の要素に影響を与えず (つまり、それらがメモリ内で再配置される)、以下が安全であると仮定するのは正しいですか:
コンテナーに関する情報を含むさまざまなサイトを調べましたが、既に知っているイテレーターが無効化されているケースについてしか知りませんでした...
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"
VC9 で同様のコードをテストしましたが、これは機能しているように見えますが、運が良かっただけでなく、コンパイラ間で変化しないという意味でもありません。