我有一个类似以下的函数,该函数接受一个指向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);
}