ref class c ++中的动态多维数组

时间:2012-07-25 22:36:43

标签: c++ .net arrays c++-cli

如果有人告诉我如何在ref class中声明动态多维数组,我将不胜感激?有人可以发布示例代码吗?

1 个答案:

答案 0 :(得分:2)

如果您能负担数组重新分配,请使用array类型。

您可以使用“数组数组”构造

/// Declaration
array<array<SomeType>^>^ arr;

/// Inititalization

arr = gcnew array<array<SomeType>^> (NumElts1);

for(int i=0 ; i < NumElts1 ; i++)
{
  arr[i] = gcnew array<SomeType> (NumElts2);
}

或只是多维的:

array<SomeType, NumDims> ^ Arr =
        gcnew array<SomeType, NumDims>(NumElts1, NumElts2, ....);

所有东西都是垃圾收集的,所以你不必担心会破坏它们。

如果您确实需要“动态”数组,那么您可能会查找System.Collections.Generic.List<T>并使用“列表列表”。列表具有ToArray()方法。

编辑:

C ++ / CLI中的array类型是一个模板:

template<typename T, int NumDims = 1>
ref class array: System::Array
{
    // black magic here
}

所以你可以将它用于没有第二个参数的1D阵列。

array<SomeType>^ Arr = gcnew array<SomeType>(SizeOfThisArray);