我想将Platform::Array
对象中的一系列项目复制到另一个Platform::Array
。我当然可以通过for
循环来解决这个问题:
int srcIdx = srcIdx0;
int destIdx = destIdx0;
for (int i = 0; i < count; ++i, ++srcIdx, ++destIdx)
dest[destIdx] = src[srcIdx];
我想知道的是,C ++ / CX(组件扩展)中是否有一些内置功能可以更有效地执行此操作并且不那么冗长?
在C#中,有Array.Copy方法,并且使用C ++ / CLI Marshal.Copy至少可以选择复制“原始”类型。
在C ++ STL中,有std::copy
和std::copy_n
,但据我所知,这些算法不适用于Platform::Array
“迭代器”begin()
和{{1 }}
是否存在某个“隐藏”的C ++ / CX便捷复制方法,或者我是否必须回退此操作的显式end()
循环?
答案 0 :(得分:2)
此时似乎没有内置的Platform::Array
复制方法,所以我为此目的实现了自己的模板功能:
template<typename T> void Copy(
const Platform::Array<T>^ sourceArray,
int sourceIndex,
Platform::Array<T>^ destinationArray,
int destinationIndex,
int length)
{
for (int i = 0; i < length; ++i, ++sourceIndex, ++destinationIndex)
destinationArray[destinationIndex] = sourceArray[sourceIndex];
};
关于如何改进复制部分的建议非常受欢迎: - )