当前位置:   C++ > 正文

将原始字节数组复制到空字节向量的最有效方法

c++,stl,vector,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具

我有一个场景,我需要将原始动态分配的uint8_t数组的内容复制到一个向量中(无论何时发生这种情况,都保证为).

vector myVector;
const uint8_t* myRawArray;

对我来说非常重要的是复制操作尽可能高效且可移植(可能会使用各种编译器版本).

我想用的一种方法是这样的:

myVector.reserve(byteCount);
myVector.insert(myVector.begin(), myRawArray, myRawArray + byteCount);

关于速度如何与此相比的任何想法:

myVector.resize(byteCount);
memcpy(myVector.data(), myRawArray, byteCount);

我想memcpy应该很快,但后来我被迫使用resize哪个需要将内存清零,所以我猜它会慢一点......

还有,还有其他建议吗?



1> Ryan McClear..:

如果在复制发生之前不需要创建向量,则可以始终将原始数组传递给向量的构造函数:

std::vector myVector(myRawArray, myRawArray + byteCount);

如果您确实需要事先构造向量,则以下是一个选项:

std::vector myVector;
// ... do some stuff ...
// Now, we're ready for the copy, and byteCount is known.
myVector.reserve(byteCount);
std::copy(myRawArray, myRawArray + byteCount, std::back_inserter(myVector));

我建议使用std :: copy,除非memcpy被证明更快.std :: copy在C++代码中更安全,更惯用,但如果真的被证明更快,不要害怕使用memcpy.速度差异很可能会随着不同的编译器而改变.

我希望这有帮助.

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/blog/CPP/detail/13971
推荐阅读
  • 如何解决《有没有人在单元测试SQL存储过程方面有任何成功?》经验,为你挑选了4个好方法。sql,unit-testing,linq-to-sql,c#,注入,go,服务器,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,... [详细]

  • 如何解决《开始学习Web应用程序设计的最佳途径》经验,为你挑选了1个好方法。language-agnostic,resources,web-applications,程序员,服务器,安全,php,ruby,html,windows,apac... [详细]

  • ,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发工具,开发人员工具,站长工具... [详细]

  • 如何解决《Swift中Realm实例的全局使用》经验,为你挑选了1个好方法。realm,swift,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开... [详细]

  • 如何解决《我应该如何处理Terraform中的"废弃"资源?》经验,为你挑选了1个好方法。amazon-ec2,amazon-web-services,terraform,go,git,安全,DevBox,在线流程图,编... [详细]

  • 如何解决《所有php文件中都添加了奇怪的代码》经验,为你挑选了1个好方法。php,wordpress,安全,xss,服务器,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在... [详细]

  • 如何解决《为什么TImage会旋转我的图像?》经验,为你挑选了2个好方法。delphi,timage,firemonkey,安全,windows,go,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二... [详细]

  • 如何解决《如何缓解Safari警告"您是否要允许此页面打开XYZ"》经验,为你挑选了1个好方法。safari,macos,objective-c,go,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,... [详细]

  • 如何解决《安全地显示上传了paperclipgem的图像》经验,为你挑选了1个好方法。ruby,ruby-on-rails,paperclip,pundit,安全,nginx,apache,DevBox,在线流程图,编程,编程问答,程序员,... [详细]

  • 如何解决《Nginx速率限制和真实IP模块》经验,为你挑选了1个好方法。nginx,limit,负载均衡,服务器,rust,机器人,分布式,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生... [详细]

  • 如何解决《如果我只允许来自特定列表的单词,我是否有SQL注入的危险?》经验,为你挑选了1个好方法。c#,sql,sql-server,sql-injection,taro,注入,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者... [详细]

  • 如何解决《基于Django类的视图-线程安全》经验,为你挑选了1个好方法。django,multithreading,安全,html,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix... [详细]

  • 如何解决《使用synchronized关键字的Spring@Transactional不起作用》经验,为你挑选了2个好方法。java,spring,synchronized,transactional,安全,DevBox,在线流程图,编程,... [详细]

  • 如何解决《Swift分配评估失效的原因是什么?》经验,为你挑选了1个好方法。language-design,assignment-operator,swift,scala,安全,objective-c,DevBox,在线流程图,编程,编程问... [详细]

  • 如何解决《网站编程漏洞清单》经验,为你挑选了2个好方法。security,defensive-programming,安全,xss,注入,sql,linux,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解... [详细]

  • 如何解决《此搜索方法中IComparable和IComparable<T>之间的差异》经验,为你挑选了1个好方法。c#,icomparable,icomparablet,windows,安全,DevBox,在线流程图,编程,编程... [详细]

  • 如何解决《启用对Keycloak的远程访问》经验,为你挑选了2个好方法。keycloak,服务器,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳,在线开发工具,前端开发... [详细]

  • 如何解决《使用设备上的预捆绑文件来反应Native,即使是DEV模式》经验,为你挑选了3个好方法。xcode,ios,react-native,iphone,服务器,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工... [详细]

  • 如何解决《如何使字符串变量在java中只有很少的预定义值》经验,为你挑选了1个好方法。java,string,enums,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成,unix时间戳... [详细]

  • 如何解决《减少案例类模型的Slick定义中的样板》经验,为你挑选了1个好方法。scala,playframework,slick,sql,安全,DevBox,在线流程图,编程,编程问答,程序员,开发者工具,开发工具,json解析,二维码生成... [详细]

相关标签
  

闽ICP备14008679号