Внимание: может быть трудно понять
Итак, допустим, у меня есть таблица, в которой должны храниться индексы, соответствующие другой таблице, содержащей объекты. Ради этого вопроса я буду называть эти индексы "idxs". Я хотел бы иметь его, чтобы можно было быстро удалить специфицированный c idx, а также иметь возможность быстро * l oop по всем idx. Я хочу, чтобы это было go как можно быстрее, и у меня есть несколько вариантов на выбор:
Примечание: я бы сказал, что может быть где-то от 500 до 3000 объектов максимум, что означает до того количества idx, чтобы ссылаться на них. Однако, вероятно, не будет более 200 idx, хранящихся в моей таблице одновременно.
Я могу сохранить каждый idx, выдвинув их в конец таблицы, что облегчает их l oop, но создает проблему с их удалением, поскольку мне нужно l oop через таблицу, чтобы найти правильный и затем удалить его.
Я могу превратить таблицу в своего рода набор, как описано здесь ( Поиск элемента в Lua списке ), что позволяет очень быстро удалять idx, но не так сильно, чтобы l oop над ними, поскольку мне может потребоваться l oop по всем пустым пробелам в таблице, которые могут быть длиной до тысячи. Кроме того, на самом деле у меня будет много этих таблиц, содержащих idx, поэтому я не думаю, что иметь такое количество таблиц такой длины - отличная идея.
Возможно, есть третья решение или, может быть, больше, но я не уверен. Что было бы лучше всего сделать в этой ситуации? Или это признак того, что мне следует полностью изменить дизайн моей программы?
В качестве второго замечания я хотел бы отметить, что удаление idx, вероятно, происходит чаще в каждом кадре, чем когда мне нужно l oop поверх них.
Я могу дать больше контекста, если необходимо.