Я использую boost::unordered_map
с пользовательской структурой, более или менее вектор целых чисел и есть пользовательский хэш-функция, которая выглядит следующим образом:становится слишком много столкновений с hash_combine
std::size_t seed = 0;
for (int i = 0; i < myvec.size(); ++i)
boost::hash_combine(seed, myvec[i]);
return seed;
Когда myvec
имеет размера 3 и я заполняю хэш с 1M элементами 1: 100 x 1: 100 x 1: 100 (поэтому каждый элемент myvec
является целым числом от 1 до 100). Я получаю около 330 000 столкновений.
Нормально ли это иметь много столкновений и что я могу сделать, чтобы этого избежать?
Под «столкновениями», я полагаю, вы имеете в виду, что они имеют значение «size_t»? –
@DavidSchwartz Я так думаю, но более конкретно - я подсчитываю ведра, которые имеют более 1 элемента в окончательном 'unordered_map' – eddi