将数据直接Memcpy到std::vector

问题描述 投票:0回答:1

使用 memcpy 直接将数据复制到 std::vector 的底层缓冲区是否合法?像这样的东西:

char buf[255];
FillBuff(buf);

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

memcpy(vbuf.data(), &buf, 255);
c++ stdvector memcpy
1个回答
4
投票

回答你的问题是的,它确实有效但是这是由于

std::vector<char>
的实施。

对于非 POD 类型和

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

正如@user4581301所指出的,

memcpy
可能是不必要的,因为您可以像对待
std::vector:: data()
一样对待
char* buffer

© www.soinside.com 2019 - 2024. All rights reserved.