Я пытаюсь выполнить тест производительности на контейнере std :: unordered_map C++ 11.std :: unordered_map заблокировать подсчет ведра
Я хочу видеть, как коэффициент загрузки контейнера влияет на производительность для вставок. В частности, потому что я заинтересован в использовании хеш-таблицы в качестве базовой структуры данных для нахождения пар в огромном наборе чисел.
Насколько я понимаю документацию, это не представляется возможным. Я могу установить количество ведер с rehash()
, но это делается автоматически при превышении max_load_factor
.
Я могу установить max_load_factor
но, как я понимаю, это только определяет при выполнении перепевы, он не позволяет таблице быть размещены под сильным напряжением, которое является то, что я хочу сделать.
Есть ли какой-либо способ для меня ограничить количество ведер в хеш-таблице?
Ваша логика звучит из хэш-таблиц адресации Comp Sci в целом, но 'std :: unordered_map' специально имеет коэффициент максимальной нагрузки по умолчанию 1.0, который не является допустимым, если нет цепочки для каждого ведра. –
Я не нашел значение IMO, которое оно реализовало. Можете ли вы указать источник для значения «1.0»? Очевидно, что это макс для некоторых реализаций, но стандарт не определяет, какой из них следует использовать. – luk32
23.5.4.2/1 и/3 говорят о эффектах конструктора 'std :: unordered_map' (post-conditions):« 'max_load_factor()' return 1.0. " Это включает конструктор, который заполняет контейнер на основе аргументов итератора, поэтому это не просто по умолчанию для пустых контейнеров, которые могут быть изменены сразу после добавления элемента. Такая же сделка для ... 'multi' ... и ...' set' контейнеров, кстати. –