2D array values C++

后端 未结 5 414
鱼传尺愫
鱼传尺愫 2020-12-05 09:34

I wanted to declare a 2D array and assign values to it, without running a for loop.

I thought I could used the following idea

int array[5] = {1,2,3,         


        
相关标签:
5条回答
  • 2020-12-05 10:10

    Just want to point out you do not need to specify all dimensions of the array.

    The leftmost dimension can be 'guessed' by the compiler.

    #include <stdio.h>
    int main(void) {
      int arr[][5] = {{1,2,3,4,5}, {5,6,7,8,9}, {6,5,4,3,2}};
      printf("sizeof arr is %d bytes\n", (int)sizeof arr);
      printf("number of elements: %d\n", (int)(sizeof arr/sizeof arr[0]));
      return 0;
    }
    
    0 讨论(0)
  • 2020-12-05 10:13

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

    Think of a 2D array as an array of arrays.

    0 讨论(0)
  • 2020-12-05 10:16

    The proper way to initialize a multidimensional array in C or C++ is

    int arr[2][5] = {{1,8,12,20,25}, {5,9,13,24,26}};
    

    You can use this same trick to initialize even higher-dimensional arrays if you want.

    Also, be careful in your initial code - you were trying to use 1-indexed offsets into the array to initialize it. This didn't compile, but if it did it would cause problems because C arrays are 0-indexed!

    0 讨论(0)
  • 2020-12-05 10:16

    One alternative is to represent your 2D array as a 1D array. This can make element-wise operations more efficient. You should probably wrap it in a class that would also contain width and height.

    Another alternative is to represent a 2D array as an std::vector<std::vector<int> >. This will let you use STL's algorithms for array arithmetic, and the vector will also take care of memory management for you.

    0 讨论(0)
  • 2020-12-05 10:20

    Like this:

    int main()
    {
        int arr[2][5] =
        {
            {1,8,12,20,25},
            {5,9,13,24,26}
        };
    }
    

    This should be covered by your C++ textbook: which one are you using?

    Anyway, better, consider using std::vector or some ready-made matrix class e.g. from Boost.

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