unordered_map и много значений.
От: steep8  
Дата: 20.02.16 09:44
Оценка:
На собеседованиях меня периодически спрашивают, что делать если количество данных вставляемых в
unordered_map неизвестно заранее. Т.е. подобрать контейнер необходимого размера заранее нельзя и rehash
будет вызываться неопределенное число раз, что отрицательно сказывается на производительности.
Очевидно ожидается какой-то стандартный ответ, какой именно?
Re: unordered_map и много значений.
От: uzhas Ниоткуда  
Дата: 20.02.16 10:01
Оценка:
Здравствуйте, steep8, Вы писали:

S>На собеседованиях меня периодически спрашивают, что делать если количество данных вставляемых в

S>unordered_map неизвестно заранее. Т.е. подобрать контейнер необходимого размера заранее нельзя и rehash
S>будет вызываться неопределенное число раз, что отрицательно сказывается на производительности.
S>Очевидно ожидается какой-то стандартный ответ, какой именно?

что-то не припомню такого стандартного вопроса
могу предположить, что надо позвать какой-нибудь метод типа reserve : http://en.cppreference.com/w/cpp/container/unordered_map/reserve
посмотрите методы из группы Hash policy отсюда: http://en.cppreference.com/w/cpp/container/unordered_map
Re[2]: unordered_map и много значений.
От: steep8  
Дата: 20.02.16 10:19
Оценка:
Здравствуйте, uzhas, Вы писали:

U>что-то не припомню такого стандартного вопроса

U>могу предположить, что надо позвать какой-нибудь метод типа reserve : http://en.cppreference.com/w/cpp/container/unordered_map/reserve
U>посмотрите методы из группы Hash policy отсюда: http://en.cppreference.com/w/cpp/container/unordered_map

Нет, reserve в данном контексте неверный ответ.
Re: unordered_map и много значений.
От: antropolog  
Дата: 20.02.16 14:25
Оценка: 3 (2)
Здравствуйте, steep8, Вы писали:

возможно хотели услышать о std::unordered_map::load_factor

но очевидно, что подобные вопросы задают вчерашние школьники, так что не расстраивайтесь.
Re: unordered_map и много значений.
От: Alexander G Украина  
Дата: 20.02.16 16:27
Оценка: 2 (1) +1
Здравствуйте, steep8, Вы писали:

S>будет вызываться неопределенное число раз, что отрицательно сказывается на производительности.


Да и ладно с ним.
Главное, что в нём есть такой автоматический рехеш.
(В отличии от, например, CMap из MFC)
Русский военный корабль идёт ко дну!
Re: unordered_map и много значений.
От: Кодт Россия  
Дата: 20.02.16 18:16
Оценка: 6 (1) +3
Здравствуйте, steep8, Вы писали:

S>На собеседованиях меня периодически спрашивают, что делать если количество данных вставляемых в

S>unordered_map неизвестно заранее. Т.е. подобрать контейнер необходимого размера заранее нельзя и rehash
S>будет вызываться неопределенное число раз, что отрицательно сказывается на производительности.
S>Очевидно ожидается какой-то стандартный ответ, какой именно?

А и пофиг, вот наш стандартный ответ.
Если стратегия рехеша — удваивать число корзин при достижении max_load_factor, то это даст усреднённый вклад O(1) на вставку одного элемента.
Так же, как с push_back в вектор.
Перекуём баги на фичи!
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.