【发布时间】:2011-07-07 10:29:28
【问题描述】:
我有一个带地图的类,我想使用 boost serialize 序列化该类。
std::map<int, ComplicatedThing> stuff;
ComplicatedThing 仅通过知道 int 即可推导。我想有效地序列化它。一种方法(不错,但可行)是制作一个键向量并序列化该向量。
// illustrative, not test-compiled
std::vector<int> v;
std::copy(stuff.begin, stuff.end, std::back_inserter(v));
// or
for(std::vector<int> it = v.begin(); it != v.end(); it++)
stuff[*it] = ComplicatedThing(*it);
// ...and later, at serialize/deserialize time
template<class Archive>
void srd::leaf::serialize(Archive &ar, const unsigned int version)
{
ar & v;
}
但这并不优雅。使用 BOOST_SERIALIZATION_SPLIT_MEMBER() 和加载/保存方法,我想我应该能够完全跳过中间向量的分配。我被卡住了。
也许我的答案在于理解 boost/serialization/collections_load_imp.hpp。希望有更简单的路径。
【问题讨论】:
标签: c++ stl boost-serialization