memcpy数据直接导入std::vector

Memcpy data directly into std::vector

使用 memcpy 直接将数据复制到 std::vector 中是否合法?像这样:

char buf[255];
FillBuff(buf);

std::vector<char> vbuf;
vbuf.resize(255)

memcpy(vbuf.data(), &buf, 255);

回答你的问题是的,它确实有效 但是 这是由于 std::vector<char>.

的实施

对于 non-POD 类型和 std::vector 具有影响内存布局的特定模板专业化的类型 (std::vector<bool>),它将不起作用。这就是你应该使用 std::copy 的原因,无论如何它都会正确运行。

如@user4581301 所述,memcpy 可能是不必要的,因为您可以像对待 char* buffer.

一样对待 std::vector:: data()