我的问题很简单。我怎么知道声明为......的数组的大小?
array<ObjectType^, 3>
我已经看到通过下一个方式访问他们的元素:
array_var[i,j,k];
那么,我怎么知道不同尺寸的大小?
答案 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);
我不确定这是否是最有效的方式(相信我,不相信),我非常确定更有经验的程序员能够得出更好的方法。但是你走了!!
顺便说一句,如果这不能回答您的问题,我很抱歉。我真的不明白,但我还是刺了一下。
享受!! :)