Хеш-таблица и множество научились выбирать аллокатор — как вектор
08.01.2026У хеш-таблицы и хеш-множества появился параметр аллокатора. До этого контейнер умел выбирать память только один — по умолчанию, а вектор уже давно умел иной.
Зачем коллекции параметр аллокатора
Аллокатор — это способ взять и освободить память. Если контейнер создаёт память сам, он не может быть частью структуры данных, которая сама управляет памятью: выделения вложенной коллекции происходят из того же источника, что и всё остальное.
Это нужно, когда объект живёт в регионе памяти с ограниченным временем жизни, в статической памяти, или когда код работает без глобального выделителя. Вектор такую возможность давно имел, хеш-таблица — нет, и это делало невозможным ряд естественных конструкций.
Что это даёт на практике
Структура, содержащая хеш-таблицу, теперь может целиком существовать в регионе памяти, освобождаемом одним действием. Раньше для этого таблицу приходилось хранить отдельно и управлять ей вручную — с риском, что время жизни таблицы переживёт время жизни структуры.
Оригинал
add allocator parameter to HashMap; часть rust-lang/wg-allocators#7
Упоминаний: 1 · Просмотров: 3