如何找到2D阵列大小在C + +(how to find 2d array size in c++)

2019-07-29 02:59发布

我要如何找到在C ++二维数组的大小? 是否有任何预定义功能类似sizeof确定数组的大小?

另外,谁能告诉我如何检测在一个错误getvalue方法阵列,同时试图让未设置值?

Answer 1:

假设你只允许使用数组,那么你可以通过以下方式发现2-d数组的大小。

  int ary[][5] = { {1, 2, 3, 4, 5},
                   {6, 7, 8, 9, 0}
                 };

  int rows =  sizeof ary / sizeof ary[0]; // 2 rows  

  int cols = sizeof ary[0] / sizeof(int); // 5 cols


Answer 2:

sizeof(yourObj)/sizeOf(yourObj[0])

应该做的伎俩



Answer 3:

使用std::vector

std::vector< std::vector<int> > my_array; /* 2D Array */

my_array.size(); /* size of y */
my_array[0].size(); /* size of x */

或者,如果你只能使用一个很好的醇”数组,你可以使用sizeof

sizeof( my_array ); /* y size */
sizeof( my_array[0] ); /* x size */


Answer 4:

#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;
}

输出:6 5



Answer 5:

随着可以参考使用指针符号数组大小,其中通过本身数组名指的是行的_countof()宏,由阵列名称所附间接运算符是指该柱。

#include <iostream>
#include <iomanip>

using namespace std;

int main()
{
    int beans[3][4]{
        { 1, 2, 3, 4 }, 
        { 5, 6, 7, 8 }, 
        { 9, 10, 11, 12 }
    };

    cout << "Row size = " << _countof(beans)  // Output row size
        << "\nColumn size = " << _countof(*beans);  // Output column size
    cout << endl;

    // Used in a for loop with a pointer.

    int(*pbeans)[4]{ beans };

    for (int i{}; i < _countof(beans); ++i) {

        cout << endl;

        for (int j{}; j < _countof(*beans); ++j) {

            cout << setw(4) << pbeans[i][j];
        }
    };

    cout << endl;
}


Answer 6:

#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 ;
    }
}


Answer 7:

其他答案上面已经回答了你的第一个问题。 至于你的第二个问题,如何检测得到的是没有设置值的误差,我不知道你的意思是下列哪种情况:

  1. 访问使用无效索引的数组元素:
    如果您使用std ::载体,可以使用矢量::在函数,而不是[]操作得到的值,如果该索引是无效的,一个out_of_range会抛出异常。

  2. 访问一个有效的指标,但是元件尚未设置:据我所知,有它没有直接的方法。 但是,下面的共同做法或许可以解决你的问题:(1)初始化到您肯定是不可能有一个值的所有元素。 例如,如果你正在处理的正整数,所有的元素设置为-1,所以你知道,当你发现它是-1值并没有被设定。 (2)。 简单地使用相同的大小的一个布尔值阵列,以指示相同的索引的元素是否被设定或没有,这适用于当所有的值都是“可能”。



Answer 8:

INT ARR [5] [4];

用于行下标(4加注到2,包括CMATH使用POW):

sizeof(arr1)/pow(4,2)   

列下标:

sizeof(*arr1)/4

4表示4个字节,INT的大小。



文章来源: how to find 2d array size in c++
标签: c++ arrays size