С точки зрения хранения данных, если кто-то будет часто получать доступ ко всем частям элемента чаще, чем тот, к кому-то конкретному элементу из группы последовательных элементов, поведение кэширования будет лучше с массивом структур.
Более интересный вопрос - как выставить данные.Если вы представляете структуру в качестве индексатора, любой, кто хочет изменить поле структуры, должен будет прочитать структуру, изменить поле во временной копии и записать его обратно.Вы можете предоставить методы для чтения / записи отдельных свойств, но «foo.setBar (100, 23)» кажется менее естественным, чем «foo (100) .Bar = 23».Если бы был разрешен последний синтаксис, я бы предложил, чтобы индексатор возвращал структуру с двумя закрытыми полями, «root» и «index», и свойствами для каждого поля структуры, например, для установщика свойства Bar индексатора.будет выполнять root.setBar (индекс, значение).Индексатор также должен иметь свойство asWhwhatStructType для получения / установки структуры в целом.