如何检查数组<object,n> size,N是一个自然数?

时间:2017-06-15 07:24:12

标签: .net arrays c++-cli

我的问题很简单。我怎么知道声明为......的数组的大小?

array<ObjectType^, 3>

我已经看到通过下一个方式访问他们的元素:

array_var[i,j,k];

那么,我怎么知道不同尺寸的大小?

2 个答案:

答案 0 :(得分:3)

看起来您正在使用c ++ / cli中的托管数组(尽管截至撰写本文时,您还没有确认这一点)。

假设您 使用cli::array实例,您可以从its documentation看到它继承自System::Array,以及该类的所有方法适用。如果你读过那个班级&#39; own documentation,您会发现Array::GetLength(Int32)方法可以让您获得给定维度的大小(请参阅该方法的文档here

例如,

array<ObjectType^, 3>^ array_var = gcnew array<ObjectType^, 3>(3, 4, 5);

声明一个大小为3*4*5的新3d数组。

array_var->GetLength(2)

将返回5(因为尺寸从0开始编号,与往常一样)。您还可以使用array_var->Rank来获取数组的维数。

答案 1 :(得分:-2)

假设你使用的是C ++ STD :: ARRAYS而不是.NET ARRAYS

这不是std :: array的工作原理。这不是一个3D数组(基于你给出的代码)。它实际上是一维阵列。

所以你的代码实际上最终会看起来像这样(在伪代码中):

std::array<int, 3> array_var;
sizeof(array_var[i]) * sizeof(int);

这应该有效。至于每个维度。好吧,你可以这样做

std::array<std::array<std::array<int, 3>, 3>, 3> test;

sizeof(test[i][0][0]) * sizeof(int);
sizeof(test[0][j][0]) * sizeof(int);
sizeof(test[0][0][k]) * sizeof(int);

我不确定这是否是最有效的方式(相信我,不相信),我非常确定更有经验的程序员能够得出更好的方法。但是你走了!!

顺便说一句,如果这不能回答您的问题,我很抱歉。我真的不明白,但我还是刺了一下。

享受!! :)