将std :: vector复制到C样式数组中

时间:2019-04-30 12:08:05

标签: c++ c++14

我有一个类似以下的函数,该函数接受一个指向c样式数组开始的指针,创建一个向量,然后将数据从该向量复制到c样式数组中。

使用带有.begin()和.end()的std :: copy不能正确复制它,但是我在下面发布的其他2种方法起作用了,我想知道为什么。

这不起作用:

void copyArr(uint8_t* Arr1)
{
    std::vector<uint8_t> Arr2;
    Arr2.reserve(100);

    for ( int i = 0; i < 100; ++i )
    {
        Arr2[i] = 5;
    }

    std::copy(Arr2.begin(), Arr2.end(), Arr1);
}

但这会起作用

void copyArr(uint8_t* Arr1)
{
    std::vector<uint8_t> Arr2;
    Arr2.reserve(100);

    for ( int i = 0; i < 100; ++i )
    {
        Arr2[i] = 5;
    }

    // This works.
    std::copy(Arr2.begin(), Arr2.begin() + 100, Arr1);

    // This will also work.
    //std::copy(&Arr2[0], &Arr2[100], Arr1);
}

0 个答案:

没有答案