У меня есть следующий код:
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
можно безопасно использовать после вставки новых значений, даже если во время вставки может произойти повторное хеширование.
Правильна ли моя интерпретация этой цитаты? Могу ли я использовать ссылки/указатели значений из карты после изменения карты (очевидно, стирание самого значения приведет к аннулированию ссылки/указателя)?