170 похожих чатов

Но у меня появилась новый небольшой вопрос) Какая разница между std::map

и std::unordered_map? Если они все равно по идее хранят пары ключ-значения в виде без строгой последовательности (так как хэшируют значения)?

11 ответов

17 просмотров

std::map не хэширует никакие значения (а правильнее, конечно, ключи) Там они как раз строго упорядочены (в смысле отношения порядка <) Как следствие - логарифмический поиск, вставка, etc.

Разные реализации, map - красно-чёрное дерево, unordered_map - хэш-таблица.

std::map хранит ключи в строго упорядоченной последовательности.

Рамзан-Костин Автор вопроса
Ilya Zviagin
Разные реализации, map - красно-чёрное дерево, uno...

понятно, думал там хэш-таблица используется. спасибо

Рамзан Костин
А как же std::hash<>?

А где ты его в std::map увидел? Там как раз есть аргумент шаблона Compare = std::less<Key>

Рамзан-Костин Автор вопроса
Georgy Firsov
А где ты его в std::map увидел? Там как раз есть а...

похоже перепутал. Но вроде смотрел в стандартной библиотеке и там в мапе был std::hash. может я путаю с чем-то другим

Рамзан-Костин Автор вопроса
Ilya Zviagin
@closeytb

я так и понял, спасибо)

Рамзан Костин
похоже перепутал. Но вроде смотрел в стандартной б...

С std::unordered_map как раз: "std::unordered_map - cppreference.com" https://en.cppreference.com/w/cpp/container/unordered_map "std::map - cppreference.com" https://en.cppreference.com/w/cpp/container/map

Georgy Firsov
С std::unordered_map как раз: "std::unordered_map ...

К слову, стандарт не регламентирует метод реализации, а только асимптотику операций и интерфейс Но обычно (да и в принципе я иных реализаций не встречал), как Илья верно заметил, std::map - RB-дерево, std::unordered_map - хэш-таблица

Похожие вопросы

Обсуждают сегодня

У меня это всегда вопрос вызывало.. Нафига писать код так, чтобы потом ошибки вылавливать?
Nik
44
Всем привет. Сейчас я изучаю erlang по книге Erlang and OTP in action. Дошел до главы где реализуется первый gen server на примере tcp rpc сервера. Меня очень сильно смутил ко...
Freezing Death
10
что за асемблер кста?
Shvabrikk Nya
19
Добрый день! Пробую отловить исключение EConvertError: function _TryTextToDouble(var DoubleVar: Extended; Text: String): Boolean; begin try DoubleVar := StrToFloat...
Kirill Filippenok
19
embassy это топ фреймворк для эмбеддед на данный момент?
AS Sarb
23
всем привет. реально ли понять чем в процессе занята память? delphi/linux, процесс свой
Handatros
12
Подскажите... Есть ли название у способа разработки кода, в котором: сперва пишут минимальную рабочую структуру: Напр. ввод, обработка, вывод, контроль. Потом эту структуру д...
Budemposmotret
6
В дизассемблере вижу, что строки пихают в регистры через lea, почему так, а не через mov?
Oleg
8
Ребята, я 3 дня как вкатился в ардуино Думал на прогрессивном молодом языке Rust попилить что-нибудь А как-то грустно с библиотеками оказалось. Не подскажете почему так? Если...
AS Sarb
18
А где @Grinyaha уважаемый пропал?
Am Ambrion
14
Карта сайта