Почему в c ++ 11 так много сегментов unordered_multimap? - PullRequest
1 голос
/ 24 октября 2019

У меня есть unordered_multimap, и я вставляю элементы, которые имеют один и тот же ключ много раз, поэтому некоторые из них должны помещаться в одну корзину. Я вставляю ровно 10000 элементов. Но по какой-то причине, когда я печатаю bucket_count (), это 12983. Это не имеет смысла для меня, если только не было маленького max_load_factor, но я напечатал его, и он, кажется, установлен на 1.0 по умолчанию, тогда как load_factor составляет около 0.7-0,8 после того как я все вставлю. Кто-нибудь знает, почему это так работает? Разве это не неэффективно? У меня может быть меньше сегментов, чем количество вставляемых элементов.

edit: почти забыл упомянуть, я инициализирую размер хеш-таблицы как n / 16, где n - количество элементов (таким образом, 10000/16= 625 в этом случае). Так что это должно было остаться неизменным, верно? Но это не так. Как мне это изменить.

...