c++ - Memcpy 数据直接存入 std::vector

标签 c++ stdvector memcpy

使用 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 .

关于c++ - Memcpy 数据直接存入 std::vector,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64298802/

相关文章:

c++ - 如何在 Xcode Objective-C 项目中导入/使用 swift 静态库/框架到 .mm 类扩展

C++ Boost::thread 可升级互斥量 "try upgrade lock"?

c++ - 如何使用#pragma message() 使消息指向文件(lineno)?

algorithm - "cut and paste"std::vector 的最后 k 个元素有效吗?

c++ - 将对象移动到 std::vector 时的异常保证

C# 将结构数组复制到 double 组

c++ - Visual Studio 2019 C++ 无法识别模板 friend

c++ - 使用 std vector 作为库中存储的缓冲区和在另一个库中使用此缓冲区的困难

C - 使用 memcpy 直接从内存中复制

c++ - 使用 reinterpret_cast 的签名别名