Я понял, что начальный размер хеш-таблицы (т. е. количество сегментов) установлен на 8 и когда в набор/карту добавляется больше элементов, это число будет удваиваться снова и снова.
Итак, набор/карта AFAIU должен хранить массив сегментов.
Я понимаю, что по умолчанию используется хэш-функция (скажем, для int):
Код: Выделить всё
size_t std::hash(int key);
Итак, хеш-функция должна сопоставить любой int-ключ с индексом от 0 до размера массива сегментов.
Однако хеш-функция не получает размер массива сегментов, так откуда она это знает?То же самое, если я предоставлю свою собственную хеш-функцию, которая будет получать только ключ, например:
Код: Выделить всё
struct HashFunctionCalc
{
size_t operator()(int key) const { return ... }
};
Заранее спасибо...
Подробнее здесь: https://stackoverflow.com/questions/783 ... shing-work