我的问题很简单。我如何知道声明为...的数组的大小?如何检查数组<object,N>的大小,N为自然数?
array<ObjectType^, 3>
我已经看到了自己的元素访问被下一方式进行:
array_var[i,j,k];
所以,我怎么能知道不同尺寸的大小?
我的问题很简单。我如何知道声明为...的数组的大小?如何检查数组<object,N>的大小,N为自然数?
array<ObjectType^, 3>
我已经看到了自己的元素访问被下一方式进行:
array_var[i,j,k];
所以,我怎么能知道不同尺寸的大小?
它看起来像你在c + +/cli中使用一个托管数组(尽管截至写作时间,你还没有确认这一点)。
在使用cli::array
例如,假设你是,你可以从its documentation看到它从System::Array
继承,而类的所有方法都是适用的。如果您阅读了该课程'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
来获取阵列的维数。
假设你使用C++的std ::数组和NOT .NET数组
也就是说阵列不是如何的std ::工作。这不会是一个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);
我不知道这是否是最有效的方法(相信我,它不是),我敢肯定更加有经验的程序员就能得出更好的方法。但是,你走了!
顺便说一句,对不起,如果这没有回答你的问题。我真的不明白,但我还是刺了一刀。
享受! :)
太棒了!这工作! Rank方法对我来说也非常有用! – areify