Если вы хотите интерпретировать каждое измерение как одно из ваших значений, это будет нормально для размеров небольших массивов. Несмотря на это, когда вы выйдете из кеша, вы, вероятно, столкнетесь с огромным снижением производительности, если хотите получить доступ к первому элементу первого измерения, а затем по второму и третьему измерениям. Это связано с расположением памяти многомерных массивов и кэшированием процессора.
Если вы будете иметь его как структуру или все 3 значения интерпретируются как одно измерение массива, и если вы будете продолжать обращаться к этому массиву обходным способом (например, не прыгать), то вы получите, вероятно, максимальная производительность.
Таким образом, это должно быть так:
struct entry
{
int age;
int girth;
int length;
}
std::array<entry, /*size*/> entries;
Это, вероятно, не будет сильно отличаться. Разумеется, запустите несколько тестов. –
Точно так же. В любом случае компилятор должен генерировать умножение для генерации правильного индекса. – EJP
. Структура может быть проще разрешить и визуализировать, и поскольку это будет 1D-массив, данные будут смежными. Если вы попробуете старый трюк 'int **' для создания динамического 2D-массива (массив массивов), вы можете столкнуться с проблемами с пропуском кеша. – user4581301