Инвалидация итераторов std::unordered_map происходит при изменении структуры хеш-таблицы или удалении элементов.
Основные случаи:
max_load_factor(). В этом случае все итераторы, ссылки и указатели на элементы становятся недействительными. Если перехеширования не происходит, итераторы на существующие элементы остаются валидными, а итератор, указывающий на конец контейнера (end()), может стать недействительным.erase(pos)) инвалидирует только итератор pos и ссылки/указатели на удаленный элемент. Итераторы на другие элементы остаются валидными. Удаление диапазона элементов (erase(first, last)) инвалидирует все итераторы, ссылки и указатели в удаленном диапазоне. Использование clear() или удаление с помощью ключа (erase(key)) инвалидирует все итераторы, ссылки и указатели на удаленные элементы. Итераторы на другие элементы остаются валидными.rehash): Явный вызов rehash() или автоматическое перехеширование из-за вставки инвалидирует все итераторы, ссылки и указатели.reserve): Аналогично перехешированию, явный вызов reserve() может вызвать реаллокацию и инвалидацию всех итераторов, ссылок и указателей.Важно помнить, что в unordered_map порядок элементов не гарантируется, и при изменении контейнера расположение элементов может меняться независимо от инвалидации итераторов.
c