Почему в c++11 unordered_multimap так много сегментов?C++

Программы на C++. Форум разработчиков
Anonymous
Почему в c++11 unordered_multimap так много сегментов?

Сообщение Anonymous »

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

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

Подробнее здесь: https://stackoverflow.com/questions/585 ... d-multimap

Вернуться в «C++»