首页 > 解决方案 > Memcpy 数据直接存入 std::vector

问题描述

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

char buf[255];
FillBuff(buf);

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

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

标签: c++stdvectormemcpy

解决方案


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

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

正如@user4581301 所指出的,memcpy可能没有必要,因为您可以std::vector:: data()像对待char* buffer.


推荐阅读