Size: a a a

cxx.Дискуссионная

2020 August 13

CC

Cool Cooler in cxx.Дискуссионная
А зачем unordered_map, если есть map?
источник

CC

Cool Cooler in cxx.Дискуссионная
Cool Cooler
А зачем unordered_map, если есть map?
unordered_map может быть быстрее иногда?
источник

VK

Vitaliy ◀️TriΔng3l▶️... in cxx.Дискуссионная
Cool Cooler
А зачем unordered_map, если есть map?
Алгоритмическая сложность операций разная
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Cool Cooler
Тааак
А как в unordered_map поиск осуществляется?
Если unordered
Хеширование, затем бакет по остатку деления хеша на количество бакетов, затем линейный поиск в std::list
источник

VK

Vitaliy ◀️TriΔng3l▶️... in cxx.Дискуссионная
Из хеш-таблицы взятие в среднем O(1), из дерева — O(log n)
источник

CC

Cool Cooler in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
Хеширование, затем бакет по остатку деления хеша на количество бакетов, затем линейный поиск в std::list
std::list?
Это типа std::vector? А в чём отличие?
источник

CC

Cool Cooler in cxx.Дискуссионная
/cppref std::list
источник

F

FailsBot in cxx.Дискуссионная
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Cool Cooler
std::list?
Это типа std::vector? А в чём отличие?
У листа операция вставок и удаления в произвольном месте стоит O(1)
источник

VK

Vitaliy ◀️TriΔng3l▶️... in cxx.Дискуссионная
У вектора есть произвольный доступ, но элементы лежат последовательно (это массив с динамическим размером — ну, как динамическим, расширение приводит к перевыделению и перемещению элементов из старой области в новую)
источник

CC

Cool Cooler in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
У листа операция вставок и удаления в произвольном месте стоит O(1)
Ого
А как это можно реализовать?
источник

CC

Cool Cooler in cxx.Дискуссионная
Даже не O(log n)
Удивительно
источник

O

Ofee in cxx.Дискуссионная
И, полагаю, разница в гарантиях на отсутствие инвалидации итераторов
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Cool Cooler
unordered_map может быть быстрее иногда?
В среднем быстрее, а так зависит от хеш-функции и статистики коллизий хеша в реальных данных
источник

VK

Vitaliy ◀️TriΔng3l▶️... in cxx.Дискуссионная
А list это связный список
источник

VK

Vitaliy ◀️TriΔng3l▶️... in cxx.Дискуссионная
У каждого элемента есть указатели на предыдущий и следующий. Но, как уже очевидно, нет произвольного доступа, чтобы дойти до какого-то элемента, надо пройти все предыдущие
источник

VK

Vitaliy ◀️TriΔng3l▶️... in cxx.Дискуссионная
Ну и ещё они не рядом друг с другом лежат, выделяется каждый из кучи
источник

CC

Cool Cooler in cxx.Дискуссионная
/dev/urandon ¯\_(ツ)_/¯
В среднем быстрее, а так зависит от хеш-функции и статистики коллизий хеша в реальных данных
Быстре во вставке и удалении?
А в поиске?
источник

AB

Artöm Bakri Al-Sarmi... in cxx.Дискуссионная
Cool Cooler
Быстре во вставке и удалении?
А в поиске?
Такой же по сложности, но на практике медленнее из-за кеша
источник

/dev/urandon ¯\_(ツ)_... in cxx.Дискуссионная
Cool Cooler
Быстре во вставке и удалении?
А в поиске?
И в поиске. Но быстрее в среднем не значит, что быстрее всегда
источник