Обратите внимание, что существуют и другие способы реализации хеш-таблиц, как отмечает Матье М.В оставшейся части этого ответа предполагается, что вы хотите использовать хеширование с сегментами из некоторого списка.
Предполагается, что вы говорите о сложности времени.
Ожидается, что хеш-таблицы будут иметь O (1) доступ в лучшем случае.Ваше предложение по реализации в этом вопросе использует map<size_t,Bucket>
для доступа к сегментам, что приведет к O (log n) временной сложности.Вам нужно что-то с O (1) сложностью времени доступа, например vector<Bucket>
, чтобы соответствовать ожидаемой сложности времени хеш-таблицы.
Подробнее
Хеш-таблицы могут варьироваться между отличной и плохой временной сложностью, в зависимости от того, насколько они малонаселены.
В лучшем случае каждое ведро имеет не более одной записи, и доступ по ключу равен O (1).Это обычно цитируемая сложность для хеш-таблиц.
В худшем случае каждый ключ имеет одинаковое хеш-значение, и доступ по ключу фактически выполняет поиск в списке, что приводит к поведению O (n).
Реальное использование обычно находится где-то между этими крайностями, возможно, ближе к O (1).
Принятый ответ на ваш другой вопрос содержит некоторый упрощенный код, который вы можете использовать для работычерез эти две крайности, чтобы убедиться, что это так.