Да, некоторые операции инвалидируют итераторы unordered_map
.
insert
, emplace
, try_emplace
, insert_or_assign
) может инвалидировать все итераторы, если она приводит к перехешированию контейнера (увеличению количества корзин и перераспределению элементов). Если перехеширования не происходит, итераторы остаются действительными.erase
) инвалидирует итератор, указывающий на удаленный элемент, и может инвалидировать другие итераторы в той же корзине, если внутренняя организация корзины меняется. Итераторы на элементы в других корзинах остаются действительными.clear()
: Инвалидирует все итераторы.rehash()
и reserve()
: Явно вызывают перехеширование и инвалидируют все итераторы.Пример, демонстрирующий инвалидацию при перехешировании после вставки:
cpp
Да, некоторые операции инвалидируют итераторы unordered_map
.
insert
, emplace
, try_emplace
, insert_or_assign
) может инвалидировать все итераторы, если она приводит к перехешированию контейнера (увеличению количества корзин и перераспределению элементов). Если перехеширования не происходит, итераторы остаются действительными.erase
) инвалидирует итератор, указывающий на удаленный элемент, и может инвалидировать другие итераторы в той же корзине, если внутренняя организация корзины меняется. Итераторы на элементы в других корзинах остаются действительными.clear()
: Инвалидирует все итераторы.rehash()
и reserve()
: Явно вызывают перехеширование и инвалидируют все итераторы.Пример, демонстрирующий инвалидацию при перехешировании после вставки:
cpp
Зарегистрируйтесь или войдите, чтобы получить доступ к полным ответам на все вопросы из банка вопросов.