c++ - 使用 Boost 序列化仅序列化 std::vector 的一部分
问题描述
我有一个很大的std::vector<X>
whereX
是一个具有serialize
函数的结构Boost
。
我想只序列化这个向量的一部分(一个连续的段),这样反序列化结果会给我一个std::vector<X>
我序列化的元素。
我可以提供指向要序列化的段的开头和结尾的迭代器,或者我可以提供开始和结束索引。有没有办法在不创建较小的向量并在其中复制所需元素的情况下做到这一点?
请注意,我正在使用binary archives
任何仅适用于此类存档的解决方案都可以。
解决方案
使用 std::valarray( https://en.cppreference.com/w/cpp/numeric/valarray ) 是这里的方法。巧合的是,boost 序列化也支持 valarray,所以你很高兴。为了清楚起见,这是一个比较 std::vector 和 std::valarray :C++ valarray vs. vector
推荐阅读
- machine-learning - 一类 SVM 算法耗时过长
- jupyter-notebook - 在 Mac 中启动 Juypter
- tensorflow - val_loss 不降低的 conv-autoencoder
- python - 具有 256 个隐藏嵌入的 BERT
- mongodb - Mongo 对执行用户拥有的目录的只读权限失败
- json - 如何对 JSON 模式对象的值设置限制?
- ios - 使用 SVG(作为 PDF)的自定义 UITabBarItem 图像在 Xcode ios 中应该是什么尺寸?
- testing - 使用 cypress 在下拉列表(自动完成组件)中未显示任何选项
- react-native - React-native-fs:如何使用 .map() 递归地使用 readDir?
- vba - 如何使用 vba 从子表单中单击父表单导航选项卡