Если массивы не обязательно должны быть смежными, то один из способов сделать это - преобразовать один индекс в два индекса, один для массива указателей на реальные массивы, а другой для массива, который имеет нужный элемент. 1001 *
Для этого вы должны создать массив указателей на эти массивы:
double** arrays = {a1, a2, a3};
затем массив их длин:
int arraysizes = { sizeof(a1) / sizeof(*a1), sizeof(a2) / sizeof(*a2), sizeof(a3) / sizeof(*a3) };
Затем, учитывая индекс n
, вы можете вычислить два индекса для arrays
, выполнив
int i1 = 0, j = 0;
while (n - arraysizes[j] >= 0)
n -= arraysizes[j++], ++i1;
И вы можете затем индексировать массив указателей, чтобы получить фактический элемент:
arrays[n][i2]
Вы также можете создать класс-обертку для выполнения этой арифметики со встроенным operator[]
.