Я ищу структуру данных, похожую на T[,,]
(трехмерный массив), за исключением того, что заранее не знаю размеров (и не имеет разумной верхней границы), которые со временем будут расширяться наружу. Я также хотел бы использовать отрицательные индексы.Структура данных для расширяемой трехмерной матрицы?
Единственное, что приходит на ум, это словарь, с каким-то свойством Point3
struct. Есть ли другие альтернативы? Я бы хотел, чтобы поиски были как можно быстрее. Данные всегда будут группироваться вокруг 0,0,0
. Он может расширяться в любом направлении, но между точками никогда не будет «пробелов».
Я думаю, что я собираюсь идти вперед и просто использовать Dictionary<Point3, T>
сейчас, и посмотреть, как это работает. Если это проблема с производительностью, я попытаюсь создать обертку вокруг T[,,]
, чтобы использовать отрицательные индексы.
Вы просите N-мерный массив (который вы не знаете размеры до времени исполнения)? Что вы планируете делать с этим массивом? Что заставляет вас полагать, что массив является правильной структурой данных для вашей проблемы? –
@ProgrammingHero: Специально 3-мерный. Я думал о массиве, потому что быстрое время поиска имеет решающее значение. Теперь, когда я думаю об этом больше, я думаю, что мне придется в конечном итоге выгрузить данные (он станет слишком большим), поэтому «центр» данных может сдвинуться с 0,0,0. Это для игры, и ее можно назвать тысячами или миллионами раз в секунду. – mpen
Можете ли вы рассказать немного больше о контексте вашей проблемы? Также существуют ли какие-либо нестандартные операции, которые необходимо поддерживать, т. Е. Запросы диапазона? –