问题描述
使用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
。