两个C ++ / CX Platform :: Array:s之间的高效复制方法?

时间:2013-02-06 08:34:12

标签: c++ windows-runtime copy c++-cx

我想将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::copystd::copy_n,但据我所知,这些算法不适用于Platform::Array“迭代器”begin()和{{1 }}

是否存在某个“隐藏”的C ++ / CX便捷复制方法,或者我是否必须回退此操作的显式end()循环?

1 个答案:

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

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