【发布时间】:2016-01-24 21:46:30
【问题描述】:
我正在尝试使用 boost::serialize 序列化一个简单的 std::unordered_map>。我设法保存地图就好了。当我尝试加载它时会出现此问题。 这是我的写作代码:
double E = 250E-4;
std::vector<double> init_vals(2,0.0);
std::unordered_map<double, std::vector<double>> map;
std::ofstream ofs("energy_map");
boost::archive::binary_oarchive oa(ofs);
map.emplace(E, init_vals);
oa << map;
我加载地图的代码是这样的:
std::ifstream ifs("energy_map");
std::unordered_map <double, std::vector<double>> map;
boost::archive::binary_iarchive ia(ifs);
ia >> map;
我得到了“ia >> map;”行的 boost::archive::archive_exception。该异常是“unregistered_cast”异常,根据 boost 文档所述:
// 未注册的基派生关系 // void_cast_register 我不太确定为什么这行不通,因为它看起来相当简单。 (我已经编辑了原始文件中的代码以使其更简单,但这些行与我的代码中的行相同)。
感谢任何帮助。谢谢!
【问题讨论】:
标签: c++ serialization boost vector unordered-map