Re[11]: про многословность
От: netch80 Украина http://netch80.dreamwidth.org/
Дата: 05.02.25 13:09
Оценка:
Здравствуйте, T4r4sB, Вы писали:

TB>Здравствуйте, netch80, Вы писали:


N>>Ну если в большинстве корзин 0 или 1 элемент (GCC поддерживает по умолчанию load factor, равный 1) — это совмещено с самими корзинами.


TB>Каждая корзина — в своей области памяти. Все равно по аллокации на элемент


Почему ты так думаешь?
Смотрю на реализацию GCC. Есть массив корзин, динамически аллоцируемый целым куском. Каждый элемент корзины — структура из значения и указателя на следующий такой же элемент. Для простоты демонстрации это выглядит где-то так:

[c++]
struct bucket_element {
Value value; // по факту просто область памяти, если !present
bool present;
struct bucket_element *next;
};
struct hash_map {
struct bucket_element *bucket_array;
size_t bucket_array_size;
};
[/c++]

Массив выделяется куском.

Дополнительные аллокации bucket_element происходят только там, где в корзине более одного элемента. Первая в каждой корзине делается по месту.
The God is real, unless declared integer.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.