how to find 2d array size in c++

后端 未结 9 769
余生分开走
余生分开走 2020-12-23 12:14

How do I find the size of a 2D array in C++? Is there any predefined function like sizeof to determine the size of the array?

Also, can anyone tell me h

相关标签:
9条回答
  • 2020-12-23 12:39
    #include<iostream>
    using namespace std ;
    int main()
    {
        int A[3][4] = { {1,2,3,4} , {4,5,7,8} , {9,10,11,12} } ;
        for(int rows=0 ; rows<sizeof(A)/sizeof(*A) ; rows++)
        {
            for(int columns=0 ; columns< sizeof(*A) / sizeof(*A[0]) ; columns++)
            {
                cout<<A[rows][columns] <<"\t" ;
            }
            cout<<endl ;
        }
    }
    
    0 讨论(0)
  • 2020-12-23 12:40
    #include <bits/stdc++.h>
    using namespace std;
    
    
    int main(int argc, char const *argv[])
    {
        int arr[6][5] = {
            {1,2,3,4,5},
            {1,2,3,4,5},
            {1,2,3,4,5},
            {1,2,3,4,5},
            {1,2,3,4,5},
            {1,2,3,4,5}
        };
        int rows = sizeof(arr)/sizeof(arr[0]);
        int cols = sizeof(arr[0])/sizeof(arr[0][0]);
        cout<<rows<<" "<<cols<<endl;
        return 0;
    }
    

    Output: 6 5

    0 讨论(0)
  • 2020-12-23 12:48

    int arr[5][4];

    For the row subscript(4 raise to 2, include cmath to use pow):

    sizeof(arr1)/pow(4,2)   
    

    Column subscript:

    sizeof(*arr1)/4
    

    4 means 4 bytes, size of int.

    0 讨论(0)
  • 2020-12-23 12:51

    Here is one possible solution of first part

    #include<iostream>
    
    using namespace std;
    int main()
    {
        int marks[][4] = {
                          10, 20, 30, 50,
                          40, 50, 60, 60,
                          10, 20, 10, 70
                         };
    
    int rows =  sizeof(marks)/sizeof(marks[0]);
    int cols = sizeof(marks)/(sizeof(int)*rows);
    
    
        for(int i=0; i<rows; i++)
        {
            for(int j=0; j<cols; j++)
            {
                cout<<marks[i][j]<<" ";
            }
            cout<<endl;
        }
    
    
    
        return 0;
    }
    
    0 讨论(0)
  • 2020-12-23 12:52

    The other answers above have answered your first question. As for your second question, how to detect an error of getting a value that is not set, I am not sure which of the following situation you mean:

    1. Accessing an array element using an invalid index:
      If you use std::vector, you can use vector::at function instead of [] operator to get the value, if the index is invalid, an out_of_range exception will be thrown.

    2. Accessing a valid index, but the element has not been set yet: As far as I know, there is no direct way of it. However, the following common practices can probably solve you problem: (1) Initializes all elements to a value that you are certain that is impossible to have. For example, if you are dealing with positive integers, set all elements to -1, so you know the value is not set yet when you find it being -1. (2). Simply use a bool array of the same size to indicate whether the element of the same index is set or not, this applies when all values are "possible".

    0 讨论(0)
  • 2020-12-23 12:54
    sizeof(yourObj)/sizeOf(yourObj[0])
    

    should do the trick

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