使用 memcpy 直接将数据复制到 std::vector 的底层缓冲区是否合法?像这样的东西:
char buf[255];
FillBuff(buf);
std::vector<char> vbuf;
vbuf.resize(255);
memcpy(vbuf.data(), &buf, 255);
回答你的问题是的,它确实有效但是这是由于
std::vector<char>
的实施。
对于非 POD 类型和
std::vector
具有影响内存布局 (std::vector<bool>
) 的特定模板专业化的类型,它将不起作用。这就是为什么你应该使用 std::copy
,无论如何它都会正确运行。
正如@user4581301所指出的,
memcpy
可能是不必要的,因为您可以像对待std::vector:: data()
一样对待char* buffer
。