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()
使用 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()