C++ 流化Boost.Serialization归档

C++ 流化Boost.Serialization归档,c++,serialization,boost,streaming,C++,Serialization,Boost,Streaming,我有一个大数据集(100k+项),我想使用Boost.Serialization进行序列化。这工作令人满意 现在,当处理更大的数据集时,整个数据集不再适合内存(我当前存储了一个std::map,其中包含存档中的所有数据)。因为我不需要随机读写,一次只需要访问一个项目,所以我考虑通过直接将实例保存到归档文件中来流式传输数据集(archive使用boost序列化进行流式传输是而不是滥用它,也不是奇怪的 事实上,Boost Serialization除了流式归档接口之外没有任何功能。因此,是的,适用的

我有一个大数据集(100k+项),我想使用Boost.Serialization进行序列化。这工作令人满意


现在,当处理更大的数据集时,整个数据集不再适合内存(我当前存储了一个
std::map
,其中包含存档中的所有数据)。因为我不需要随机读写,一次只需要访问一个项目,所以我考虑通过直接将实例保存到归档文件中来流式传输数据集(
archive使用boost序列化进行流式传输是而不是滥用它,也不是奇怪的

事实上,Boost Serialization除了流式归档接口之外没有任何功能。因此,是的,适用的方法是按照您所说的:

archive << number_of_items;
for(auto it = input_iterator(); it != end(); ++it)
    archive << *it;

存档现在只剩下一个小问题;创建存档时,我不知道会有多少项,因此我无法首先序列化项的数量。到目前为止,我想到的最好办法是让主数据文件和一个附带的文件携带元数据,如项的数量。第二个最好的办法是乱来d的格式,比如在读取存档文件时,将项目数附加为简单的4字节int,并在读取之前手动读取。@dom0无需任何设置。您只需使用a表示“EOS”(流结束)。我真的很怀念这里的树的森林。谢谢!)(我想我一直在想,如果一个人只存储一种对象,那么档案应该像容器一样使用,或者类似的东西)