РЕПЕТИТОР математика физика информатика
Для школьников и студентов. Подтягивание пробелов. ЦЭ, ЦТ, ОГЭ, ЕГЭ.
Идет набор на ЛЕТО. Жмите для подробностей:)
291 of 815 menu

Метод rehash

Метод rehash класса unordered_map устанавливает количество корзин (buckets) в контейнере равным заданному значению или большему. Если новое количество корзин больше текущего, происходит перестроение хеш-таблицы: все элементы перераспределяются по новым корзинам. Это может быть полезно для уменьшения количества коллизий и ускорения поиска. В первый параметр мы передаем желаемое количество корзин. Сами элементы при этом не удаляются и не изменяются.

Синтаксис

umap.rehash(count)

Пример

Давайте создадим unordered_map с несколькими элементами и посмотрим на количество корзин до и после вызова rehash:

#include <iostream> #include <unordered_map> using namespace std; int main() { unordered_map<string, int> umap = { {"a", 1}, {"b", 2}, {"c", 3} }; cout << "Before: " << umap.bucket_count() << endl; umap.rehash(20); cout << "After: " << umap.bucket_count() << endl; return 0; }

Результат выполнения кода:

"Before: 13" "After: 23"

Пример

Давайте убедимся, что после вызова rehash все элементы контейнера сохраняются и остаются доступными:

#include <iostream> #include <unordered_map> using namespace std; int main() { unordered_map<string, int> umap = { {"a", 1}, {"b", 2}, {"c", 3} }; umap.rehash(50); for (auto& pair : umap) { cout << pair.first << " " << pair.second << endl; } return 0; }

Результат выполнения кода:

"c 3" "b 2" "a 1"

Смотрите также

  • метод reserve,
    который резервирует место под заданное число элементов
  • метод bucket_count,
    который возвращает количество корзин
  • метод load_factor,
    который возвращает коэффициент загрузки
  • класс unordered_map,
    который представляет хеш-таблицу
Мы используем cookie для работы сайта, аналитики и персонализации. Обработка данных происходит согласно Политике конфиденциальности.
принять все настроить отклонить