我现在每天都在讨论这个话题。我尝试使用Vectors
,IVectors
和Arrays
.
Arrays
WinRT 中的维度不能高于 1,Vectors
似乎无法在公共环境中使用。(如果你能告诉我怎么做,请做!)并且IVectors
是接口,所以你不能制作IVector
.IVectors
有没有,我的意思是有什么方法可以制作一个真正的二维数组或数组数组,就像在 C++/CLI 中可能的那样?
(是的,我知道我可以用一维数组模拟二维,但我真的不想这样做。)
我现在每天都在讨论这个话题。我尝试使用Vectors
,IVectors
和Arrays
.
Arrays
WinRT 中的维度不能高于 1,Vectors
似乎无法在公共环境中使用。(如果你能告诉我怎么做,请做!)并且IVectors
是接口,所以你不能制作IVector
.IVectors
有没有,我的意思是有什么方法可以制作一个真正的二维数组或数组数组,就像在 C++/CLI 中可能的那样?
(是的,我知道我可以用一维数组模拟二维,但我真的不想这样做。)
我对这个问题使用了这个解决方法。不漂亮,但实用。
与其创建向量的向量,不如创建对象的向量。然后使用 safe_cast 访问包含向量中的向量。
Platform::Collections::Vector<Object^ >^ lArrayWithinArray = ref new Platform::Collections::Vector<Object^ >();
//Prepare some test data
Platform::Collections::Vector<Platform::String^>^ lStrings = ref new Platform::Collections::Vector<Platform::String^>();
lStrings->Append(L"One");
lStrings->Append(L"Two");
lStrings->Append(L"Three");
lStrings->Append(L"Four");
lStrings->Append(L"Five");
//We will use this to show that it works
Platform::String^ lOutput = L"";
//Populate the containing Vector
for(int i = 0; i < 5; i++)
{
lArrayWithinArray->Append(ref new Platform::Collections::Vector<String^>());
//Populate each Vector within the containing Vector with test data
for(int j = 0; j < 5; j++)
{
//Use safe_cast to cast the Object as a Vector
safe_cast<Platform::Collections::Vector<Platform::String^>^>(lArrayWithinArray->GetAt(i))->Append(lStrings->GetAt(j));
}
}
//Test loop to verify our content
for(int i = 0; i < 5; i++)
{
for(int j = 0; j < 5; j++)
{
lOutput += lStrings->GetAt(i) + L":" + safe_cast<Platform::Collections::Vector<Platform::String^>^>(lArrayWithinArray->GetAt(i))->GetAt(j) + ", ";
}
}