/ / Який розмір масиву з 4 дужками - c ++, масиви, багатовимірний масив

Яка розмірність масиву з 4 дужками - c ++, масивами, багатовимірним масивом

скажімо, у мене масив, як:

       double theArray[2][5][3][4];

Я не розумію останнього виміру.

 first is [][][][][]

second is [][][][][]
[][][][][]

third would make it 3 dimensional,

що буде робити четвертий?

Відповіді:

6 за відповідь № 1

C ++ (наприклад, C перед ним) дійсно не має багатовимірних масивів, тому жоден з них дійсно не відповідає розмірам 2, 3, 4 (і т.д.).

Швидше за все, що забезпечує C ++, це масиви, масиви масивів і т.д. З чотирма наборами дужок у вас є масив масивів масивів масивів.

Тепер забудьте про те, що я казав щось із цього - використанняМасиви в C ++ рідко хороша ідея, і використання масивів масивів, як правило, ще гірше. Масив psuedo-4D, як ви показали вище, багато разів ще гірше. Просто не робіть цього.

Якщо вам потрібно наслідувати матрицю 2D, 3D та ін, використовуйте клас. Це робить життя драматично простіше.


4 для відповіді № 2

Четвертий вимір - це час. Разом з трьома просторовими розмірами він утворює космічний час.


1 для відповіді № 3
double theArray[2] ==> [][]

double theArray[2][5] ==> [][], [][], [][], [][], [][]

double theArray[2][5][3] ==> [][], [][], [][], [][], [][]
[][], [][], [][], [][], [][]
[][], [][], [][], [][], [][]

double theArray[2][5][3][4] ==> .............

1 для відповіді № 4

У C і C ++ 2-мірний масив - це просто масив масивів - нічого більше, не менше.

3-мірний масив - масив масивів масивів.

Що у вас є:

double theArray[2][5][3][4];

це 4-мірний масив, масив масивів масивів масивів.

Якщо ви думаєте з точки зору просторових вимірів, то це не обов'язково для будь-якого фізичного значення будь-який розмірів масиву. Вони просто наказали послідовності елементів, де послідовності можуть бути послідовностями тощо.

Не існує ніякої межі (окрім простору компиляції та часу виконання, а також може бути деяка довільна межа, накладена компілятором) на кількість розмірів, які масив може мати.

Для 2-мірного масиву ви можете думати про елементи, викладені в прямокутній сітці:

[][][][]
[][][][]
[][][][]

але насправді вся річ лінійна, з кожним рядком відразу після попереднього в пам'яті.

[][][][][][][][][][][][]
- row0 -- row1- - row2 -

Ви також можете створювати інші структури даних, які діютьяк багатомірні масиви. Якщо ви використовуєте покажчики, масиви вказівників тощо, то елементи та рядки можуть бути розкидані довільно через пам'ять. Але це не має значення для більшості цілей.

Розділ 6 comp.lang.c FAQ дуже добре обговорює часто заплутані зв'язки між масивами та покажчиками в C, більшість з яких також стосується C ++.

C ++ надає інші структури даних як частину стандартної бібліотеки, які є більш гнучкими та надійними, ніж масиви C-стилі.


0 для відповіді № 5

Я хочу трюку, щоб отримати візуалізацію, що таке 4(4-мірна матриця в математичних умовах) ви можете просто представити її як масив кубів (прямокутні паралелепіпеди бути точнішими, якщо розмірність не рівна).

Так само, як 3-мірний масив можна представити як масив матриці


0 для відповіді № 6

Припустимо, ми хочемо використовувати багатомірний масив для відстеження світового населення.

// Population per country:
int population[ C ];
// the 1st dimension is the country index, C is the number of countries

// Population per country per state:
int population[ C ][ S ];
// the 2nd dimension is the state index, S is the max number of states per cuntry

// Population per country per state per county:
int population[ C ][ S ][ N ];
// the 3rd dimension is the county index, N is the max number of county per state

// Population per country per state per county per city:
int population[ C ][ S ][ N ][ I ];
// the 4th dimension is the city index, I is the max number of city per county

// Population per country per state per county per city per gender

// Population per country per state per county per city per gender per age-group

Примітка. Це лише приклад, це, звичайно, не найкращий спосіб моделювання населення.

Примітка 2: Див. Також відповідь Джері Ковена.