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