У меня есть следующий код:станда :: unordered_map указатели/ссылка недействительность
std::unordered_map<std::string, std::string> map;
map["k1"] = "v1";
auto& v1 = map["k1"];
map["k2"] = "v2";
После прочтения http://en.cppreference.com/w/cpp/container/unordered_map
Примечания
Функция замены не нарушает какое-либо из итераторы внутри контейнер, но они делают недействительным итератор, обозначающий конец области подкачки.
Ссылки и указатели на любую клавишу или данные, хранящиеся в контейнере, недействительны только путем стирания этого элемента, даже если соответствующий итератор недействителен.
Похоже, что v1
можно безопасно использовать после внесения новых значений, даже если при вставке может произойти повторное хеширование.
Является ли моя интерпретация этой цитаты правильной? Можно ли использовать ссылки/указатели значений из карты после изменения карты (очевидно, стирание самого значения приведет к аннулированию ссылки/указателя)?
Да, вы правы. См. [Здесь] (http://en.cppreference.com/w/cpp/container/unordered_map/operator_at). –