Главное различие в том, как элементы хранятся и извлекаются:
std::map: Хранит элементы в отсортированном порядке ключей. Обычно реализуется на основе красно-черного дерева. Поиск, вставка и удаление имеют логарифмическую сложность O(log N), где N — количество элементов.std::unordered_map: Хранит элементы в хэш-таблице. Порядок элементов произвольный. В среднем, поиск, вставка и удаление имеют константную сложность O(1). В худшем случае, при наличии коллизий, сложность может достигать O(N).| Признак | std::map | std::unordered_map |
|---|---|---|
| Упорядоченность | По ключу (возрастание) | Нет |
| Базовая структура | Красно-черное дерево | Хэш-таблица |
| Средняя сложность | O(log N) | O(1) |
| Худшая сложность | O(log N) | O(N) |
| Требования к ключу | Оператор < | Хеш-функция и == |
Пример использования:
cpp