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

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

1 ответ

Решение

Представьте, что у вас есть базовый массив размером 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 также должен заботиться о коллизиях, потому что эта функция может возвращать одно и то же значение для разных входных данных.

Другие вопросы по тегам