HashSet c ++ разъяснение

Я заблудился в этой теме, которую я изучал. В моем классе мы реализуем наш собственный класс хэш-наборов. Таким образом, у нас есть базовая структура данных, такая как вектор или массив, и мы используем хеш-функцию, чтобы быстро определить, есть ли элемент в наборе. Это та часть, которой я не следую. Как будет использоваться хеш-функция для этого определения?

0

Решение

представьте, что у вас есть базовый массив размером 100, и вы можете вставить только значения от 0 до 99.

что-то вроде этого:

class UselessHashMap
{
public:
void insert(int value){
_arr[hash(i)] = i;
}
private:
int hash(int i) { return i };
std::array<int,100> _arr;
}

теперь представьте, что вы хотите хранить более 100 элементов, и у вас не может быть массива, который имеет бесконечный размер (std :: numeric_limits :: max ()).
В этом случае ваша хеш-функция должна будет возвращать вам значение в диапазоне от 0 до 99, и, конечно, ваш класс UselessHashMap также должен заботиться о коллизиях, поскольку эта функция может возвращать одно и то же значение для разных входных данных.

0

Другие решения


По вопросам рекламы [email protected]