有没有办法让vertex_descriptor
boost::graph
可序列化? Boost确定<boost/graph/adj_list_serialize.hpp>
用于序列化整个图结构,但不是单独的。
我有一个邻接列表图,它包含3dvector(顺便说一下,代表X,Y,Z坐标中的3d世界)顶点
typedef boost::adjacency_list<
boost::listS,
boost::listS,
boost::undirectedS,
3dvector>
Graph;
typedef Graph::vertex_descriptor VertexId;
typedef Graph::edge_descriptor EdgeId;
但是我还需要为查找保留单独的映射信息,这就是问题所在:boost不知道如何序列化VertexId
。它们存储在STL映射中:std::map<string, VertexId>
以便字符串查找可以返回图中的右顶点,因为vertex_descriptor
本质上是指向图中特定顶点的引用。
我的目的是将图表和地图序列化为文件,但我找不到序列化vertex_descriptor
的方法。
答案 0 :(得分:0)
您需要存储图形和位置(某些矢量/顶点列表)。您必须为表示顶点的任何内容编写序列化方法。
template<typename Archive>
void serialize(Archive &ar, LatLon &loc, const unsigned int /*version*/) {
ar &loc.latitude &loc.longitude;
}
现在您可以使用以下方法序列化图表:
std::vector<LatLon> locations; // or a list
archive & graph & locations;
graph
是adjencency_list,locations
是LatLon类/结构的向量/列表。我认为助推器已经知道如何处理列表/向量。