Задать вопрос
@historydev
Mistkerl, drück den Knopf.

Как называется такая структура данных?

Есть 2 переменных, одна хранит индексы элементов в хеш-таблице по их id, другая массив с элементами. Что позволяет получать доступ к элементу по id за O(1).
let indexes: HashMap<Uuid, usize>;
let objects: Vec<Object>;
  • Вопрос задан
  • 491 просмотр
Подписаться 1 Простой 3 комментария
Решения вопроса 2
wataru
@wataru
Разработчик на С++, экс-олимпиадник.
Никак не называется. Можно структуры комбинировать для ваших задач, но это частные случаи применения структур, не настолько частые, чтобы давать этой комбинации какое-то имя. Если уж хочется назвать это как-то, то это все еще будет хеш-таблица с какими-то вспомагательными пристройками для каких-то дополнительных нужных вам свойств (итерация).

И вообще, у вас тут намудрено, почему нельзя сделать просто:
let objects: HashMap<Uuid, Object>;

Тут все такой же O(1) доступ к элементу по id. Зачем вам массив? Вы там добились простой и cache-friendly итерации по всем объектам? Не факт, что это уже не реализовано внутри HashMap. По крайней мере во многих языках можно проитерироваться по всем объектам в стандартной хеш-таблице.

Зато у вас там удаление элемента - это что-то сложное. Особенно, если вы не хотите избежать фрагментации и неиспользованного места в массиве.
Ответ написан
GavriKos
@GavriKos
Хеш-таблица )
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы