c++ - 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
.
推荐阅读
- r - xgb.cv 没有折叠并根据数据的拆分返回结果
- mysql - 一对一关系Mysql EF6
- graphql - GraphQL:整数太长?(AWS Amplify/GraphQL 转换)
- scikit-learn - 聚类算法的准确性是多少?
- loops - “add-sub”程序emu8086对应的流程图是什么?
- c# - 如何从非静态方法实例化静态方法中的控件
- firebase - 无法更改颤动的功能区域
- css - 如何仅使用 CSS 突出显示文本中的一个特定单词?
- javascript - Django项目中的JS代码创建问题(“引入局部变量”)
- nestjs - 关于 NestJS 拦截器执行顺序的说明