Да, у меня есть жесткая привязка к индексам
TMap очень сложно перебирать, тоже не очень подходит(
Перебирать мапу это должно быть O(n), то же что перебирать односвязный список. Понятно что прыжки по памяти, но для небольшого количества элементов это будет незаметно. За то просто в реализации и сложно накосячить.
Если итерирование все таки хочется ускорить, то можно сделать TArray и две вспомогательных TMap которые будут преобразовывать уникальный индекс в индекс этого массива и обратно. Тогда можно будет держать массив в том виде который лучше всего подходит для итерирования, а поиск по нему всегда будет как поиск по мапе.
Есть ещё такая структура данных как SparseArray, но не уверен насколько эффективно ее использовать по памяти если индексы растут в бесконечность.