Simple 3D Array C++

后端 未结 5 1595
深忆病人
深忆病人 2021-02-05 13:57

I am a novice in C++ and I am trying to create a simple static 3 Dimensional Array and then print it out in console.

Here is my current code:

#include &l         


        
相关标签:
5条回答
  • 2021-02-05 14:14

    Your declare a 2x2x2 array, but defining it as a 2x8 array.

    Also, when you print the content of your array, you use MAX_* as indexes instead of your loop variables.

    #include <iostream>
    
    int main()
    {
        const int MAX_ROW = 2;
        const int MAX_COL = 2;
        const int MAX_HEIGHT = 2;
    
        int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = {
            {
                {1,1}, {1,-1}
            },
            {
                {2,10}, {2,-10}
            }
        };
    
        for(int Row = 0; Row < MAX_ROW; ++Row)
            for(int Col =0; Col < MAX_COL; ++Col)
                for(int Height = 0; Height < MAX_HEIGHT; ++Height)
                    std::cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] << std::endl;
    
    
      return 0;
    }
    
    0 讨论(0)
  • 2021-02-05 14:25

    Apart from wrong array initialization as others have pointed out you also have an error in printing. You always print the same element that doesn't even exist (which is undefined behaviour).

    cout << "Integer["<< Row << "][" << Col << "][" << Height << "] = " << MyArray[Row][Col][Height] << endl;
    
    0 讨论(0)
  • 2021-02-05 14:26

    you array MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] only can hold 2*2*2=8 elements, but

    { {1,1},
                               {2,10},
                               {3,15},
                               {4,20},
                               {5,25},
                               {6,30},
                               {7,35},
                               {8,40} };
    

    has 16 elements. so there are too many initializers

    0 讨论(0)
  • 2021-02-05 14:31

    Your syntax is wrong.

    int a[2][2][3] = {     // Initialize entire variable
      {                    //   1 of 2 (leftmost array)
        { 1, 2, 3 },       //     1 of 2 (inner array)
        { 4, 5, 6 },       //     2 of 2 (inner array)
      },
    
      {                    // 2 of 2 (leftmost array)
        { 7, 8, 9 },       //     1 of 2 (inner array)
        { 10, 11, 12 },    //     2 of 2 (inner array)
      },
    }
    

    What you've shown would be an int [8][2].

    0 讨论(0)
  • 2021-02-05 14:34

    Change the code as per following. You can see there are 2 groups containing two tuples each having two elements in it.

     int MyArray[MAX_ROW][MAX_COL][MAX_HEIGHT] = { 
                                                   { {1,1},{2,10} }, 
                                                   { {4,20},{5,25} } 
                                                 };
    

    Have a look in following example to make it more clear

      int arr[2][3][4] = { 
                           { {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} },
                           { {1, 2, 3, 4}, {1, 2, 3, 4}, {1, 2, 3, 4} } 
                         };
    

    As you can see, there are two groups, each containing three groups of 4 numbers.

    0 讨论(0)
提交回复
热议问题