std :: mapに要素を追加/削除しても他の要素に影響を与えない(つまり、メモリに再配置される)ことを前提にして、安全である:C++ 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にいくつかの類似したコードをテストしましたしかし、これはうまくいくように見えますが、それは私が幸運になるだけでなく、コンパイラによって変わらないということを意味しません。
答えを削除した理由は分かりません。ナディーンは、私が見る限り正しいものでした。 – CiscoIPPhone
naveenの答えは反復子に関するもので、この質問は –
ではありません。私は2番目の読書で私は実際の質問が何であるか完全にはっきりしていないので、私の答えも削除しました。 –