首页 > 解决方案 > 使用 Boost 序列化仅序列化 std::vector 的一部分

问题描述

我有一个很大的std::vector<X>whereX是一个具有serialize函数的结构Boost

我想只序列化这个向量的一部分(一个连续的段),这样反序列化结果会给我一个std::vector<X>我序列化的元素。

我可以提供指向要序列化的段的开头和结尾的迭代器,或者我可以提供开始和结束索引。有没有办法在不创建较小的向量并在其中复制所需元素的情况下做到这一点?

请注意,我正在使用binary archives任何仅适用于此类存档的解决方案都可以。

标签: c++boost-serialization

解决方案


使用 std::valarray( https://en.cppreference.com/w/cpp/numeric/valarray ) 是这里的方法。巧合的是,boost 序列化也支持 valarray,所以你很高兴。为了清楚起见,这是一个比较 std::vector 和 std::valarray :C++ valarray vs. vector


推荐阅读