Я создаю std::unordered_map
, который я немедленно перейду к заполнению с помощью n пар ключ-значение - и я знаю n. После этого не будет добавлено больше элементов - я буду выполнять поиск только.Какое значение bucket_count следует использовать, если я знаю предполагаемое количество ключей карты?
Что, следовательно, следует передать как bucket_count
конструктору?
Примечания:
- Я знаю, что это не очень критическое, и я просто не мог указать ничего, и он будет работать.
- Это связано, но не контратип, What should I pass to unordered_map's bucket count argument if I just want to specify a hash function?)
- Если это поможет ваш ответ, вы можете предположить, что я хочу, чтобы иметь коэффициент нагрузки между f_1 и F_2 (известный заранее).
- Я использую функцию хэш-умолчанию, и я не знаю, что вход как, но это вряд ли будет состязательный к хеширования ..
Это очень многое зависит от того, что вы будете делать с этой картой впоследствии. Будете ли вы добавлять другие элементы или просто читать? Вы ищете скорость или эффективность пространства? Сколько коллизий вы получаете от хэш-функции на вашем наборе? Разумеется думать о коэффициенте нагрузки, а не о фактическом количестве ведер. –
@ Jean-BernardJansen: Смотрите править. Кроме того, я бы хотел какой-то разумный дефолт - так же, как мы теперь имеем разумный дефолт, не зная n. Добавление этой информации и применение тех же соображений должно привести к некоторому числу ... – einpoklum