Если я продолжаю добавлять значения в unordered_map, то каждый раз, когда количество элементов превышает bucket_count () (при условии max_load_factor = 1), происходит перефразировка.
Что меня очень смущает, так это размер корзины после rehashing.
#include <iostream>
#include <unordered_map>
int main() {
std::unordered_map<size_t, size_t> mp;
for (size_t i = 0; i < 1000; ++i) {
mp[i] = i;
std::cout << " count: " << mp.bucket_count() << std::endl;
}
}
Это выводит 3 7 17 37 79 167 337 709 1493
Я заметил, что размер корзины прост и приблизительно удваивается. Однако это не самое близкое к следующей степени 2 число.
Какова методология этого увеличения размера корзины. Я был удивлен или настолько глуп, что ничего не нашел об этом в стандартных ссылках, таких как cplusplus.com