Memcpy数据直接进入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>的实施。

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

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