2008-12-12 6 views
5

Этот код генерирует ошибку компиляции, указанную в заголовке, может ли кто-нибудь сказать мне, что изменить?недопустимые типы 'int [int]' для индекса массива

#include <iostream> 

using namespace std; 

int main(){ 

    int myArray[10][10][10]; 

    for (int i = 0; i <= 9; ++i){ 
     for (int t = 0; t <=9; ++t){    
      for (int x = 0; x <= 9; ++x){ 
       for (int y = 0; y <= 9; ++y){ 

       myArray[i][t][x][y] = i+t+x+y; //This will give each element a value 

         } 
         } 
         } 
         } 

    for (int i = 0; i <= 9; ++i){ 
     for (int t = 0; t <=9; ++t){ 
      for (int x = 0; x <= 9; ++x){ 
       for (int y = 0; y <= 9; ++y){ 

       cout << myArray[i][t][x][y] << endl; 

        } 
        } 
        }     
        } 

    system("pause"); 

} 

заранее спасибо

ответ

11

Вы индексирование трехмерного массива со myArray[10][10][10] четыре раза myArray[i][t][x][y]. Вероятно, вам нужно добавить другое измерение в ваш массив. Также рассмотрите контейнер, например Boost.MultiArray, хотя это, вероятно, над вашей головой в этот момент.

+0

черт возьми, я, должно быть, случайно удалил эту строку раньше, прежде чем начал ее запускать. – user33061 2008-12-12 19:32:45

1

Вы пытаетесь получить доступ к 3 одномерный массив с 4 ослабляющих ссылки

Вам нужно только 3 петли вместо 4, или int myArray[10][10][10][10];

1
int myArray[10][10][10]; 

должен быть

int myArray[10][10][10][10]; 
5

Что измениться? Помимо проблемы с 3 или 4-мерным массивом, вы должны избавиться от магических чисел (10 и 9).

const int DIM_SIZE = 10; 
int myArray[DIM_SIZE][DIM_SIZE][DIM_SIZE]; 

for (int i = 0; i < DIM_SIZE; ++i){ 
    for (int t = 0; t < DIM_SIZE; ++t){    
     for (int x = 0; x < DIM_SIZE; ++x){ 
+0

На всякий случай в будущем у вас будет другое количество пальцев ;-) – 2008-12-13 02:55:06

0

Я думаю, что у вас был инициализированный 3D-массив, но вы пытаетесь получить доступ к массиву с 4-мя измерениями.

+0

Мой совет при предоставлении ответов - попытаться указать на конкретные части исходного кода из вопроса. В вашем случае это будет означать включение `` `int myArray [10] [10] [10];` `` для 3-мерной ссылки на массив и `` `myArray [i] [t] [x] [y ] = i + t + x + y; `` `для ссылки на 4-мерный массив. Иногда люди будут downvote, если у них нет контекста, чтобы понять ваш ответ. – 2018-02-04 17:41:36

Смежные вопросы