【问题标题】:How to serialize/deserialize with boost std::vector of boost::unordered_map如何使用 boost std::vector of boost::unordered_map 进行序列化/反序列化
【发布时间】:2014-05-29 00:57:24
【问题描述】:

如何使用 boost::unordered_map 的 boost std::vector 进行序列化/反序列化

vector<boost::unordered_map<uint64_t, Person* > *> town;

代表城镇。所有指针都是用new创建的堆上的行。是否可以在不重构代码以使用 shared_ptr 的情况下轻松反序列化? 人也有功能

template<class Archive>
void serialize(Archive & archive, const unsigned int version){
...
}

【问题讨论】:

  • 看起来这是一个向您提出的问题,您可能需要重新提出问题,包括您如何尝试解决它,然后有人可以帮助您解决您的尝试解决方案。
  • Boost.Serialization automatically handles pointers。只要Person 是可序列化的,那么Pointer* 就完全没有问题。你遇到了什么问题?
  • @ildjarn 问题是当我想反序列化时,我需要所有人都在堆上与所有 unordered_maps 相同。

标签: c++ boost boost-serialization


【解决方案1】:

Boost 序列化尚不支持 unordered_*。

要么添加支持,要么使用(已弃用的)GCC hash_* 容器

如何添加支持的示例在我的这个答案中:C++ Boost.Serialization error for hash_map with custom objects as key

【讨论】:

    【解决方案2】:

    Boost 从 1.5.6 版本开始已经支持 unordered_setunordered_map。你可以只包含头文件。

    #include <boost/serialization/unordered_map.hpp>
    #include <boost/serialization/unordered_set.hpp>
    

    【讨论】:

      猜你喜欢
      • 2016-01-24
      • 2011-05-15
      • 2011-05-16
      • 2015-10-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-05
      相关资源
      最近更新 更多