TGViewer
C/C++ | Вопросы собесов C/C++ | Вопросы собесов @easy_c_plus · 4.19K subscribers
Post #2495 514
🤔 Какая сложность работы с map и unordered_map?

В std::map и std::unordered_map используются разные структуры данных, поэтому их операции (insert, find, erase) имеют разную сложность.

🚩Почему `std::map` медленнее?

std::map – это самобалансирующееся красно-чёрное дерево, где все операции (insert, find, erase) выполняются за O(log n).
std::map<int, std::string> m;
m[10] = "ten"; // O(log n)
m[5] = "five"; // O(log n)
m[20] = "twenty"; // O(log n)
m.find(5); // O(log n)


Дерево std::map выглядит так
        10
/ \
5 20


🚩Почему `std::unordered_map` быстрее?

std::unordered_map – это хеш-таблица, где insert, find, erase работают за O(1) в среднем.
std::unordered_map<int, std::string> um;
um[10] = "ten"; // O(1)
um[5] = "five"; // O(1)
um[20] = "twenty"; // O(1)
um.find(5); // O(1)


Внутри std::unordered_map выглядит так (разбито по бакетам)
Bucket 0:  ---
Bucket 1: ---
Bucket 2: (10, "ten")
Bucket 3: (5, "five")
Bucket 4: (20, "twenty")


🚩Когда `std::unordered_map` становится медленным (`O(n)`)?

В худшем случае все элементы попадают в один бакет (из-за плохой хеш-функции), тогда поиск превращается в O(n).
std::unordered_map<int, std::string> um;
um[1] = "one";
um[2] = "two";
um[3] = "three";


Ставь 👍 и забирай 📚 Базу знаний
More from @easy_c_plus
  1. Oct 10, 2026🤔 Зачем нужен виртуальный деструктор? Виртуальный деструктор необходим, когда класс предп…
  2. Oct 10, 2026🤔 Что знаешь про гарантии безопасности исключений? Гарантии безопасности исключений (Exce…
  3. Oct 9, 2026🤔 Строгая гарантия безопасности Гарантии безопасности исключений в C++ делятся на три уро…
  4. Oct 8, 2026🤔 Выбрасывание исключения из конструктора — это нормально? Да, выбрасывание исключения из…
  5. Oct 8, 2026🤔 Какое преимущество у list перед vector? List обеспечивает быстрые вставки и удаления за…
  6. Oct 7, 2026🤔 Как работает priority_queue? priority_queue управляет элементами на основе их приоритет…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →