1

我想将一个对象中的一系列项目复制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::copyand std::copy_n,但据我所知,这些算法不适用于Platform::Array“迭代器”begin()end().

某处是否有“隐藏”的 C++/CX 便捷复制方法,或者我是否必须回退for此操作的显式循环?

4

1 回答 1

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];
};

关于如何改进复制部分的建议非常受欢迎:-)

于 2013-02-06T10:08:16.110 回答