如何使用 boost std::vector of boost::unordered_map 进行序列化/反序列化
Posted
技术标签:
【中文标题】如何使用 boost std::vector of boost::unordered_map 进行序列化/反序列化【英文标题】:How to serialize/deserialize with 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 相同。
【参考方案1】:
Boost 序列化尚不支持 unordered_*。
要么添加支持,要么使用(已弃用的)GCC hash_* 容器
如何添加支持的示例在我的这个答案中:C++ Boost.Serialization error for hash_map with custom objects as key
【讨论】:
【参考方案2】:Boost 从 1.5.6 版本开始已经支持 unordered_set
和 unordered_map
。你可以只包含头文件。
#include <boost/serialization/unordered_map.hpp>
#include <boost/serialization/unordered_set.hpp>
【讨论】:
以上是关于如何使用 boost std::vector of boost::unordered_map 进行序列化/反序列化的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 std::vector 初始化 boost::random::discrete_distribution?
使用 boost::is_any_of 拆分会混淆分隔符 ",," 和 ","
使用 boost::python vector_indexing_suite 包装 std::vector
boost::container::vector 和 std::vector 有啥区别
在 boost::asio::buffer 中使用类似 std::vector<std::complex<double>> 的参数