シリアライズ可能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;
ただし、ルックアップ用に別のマッピング情報を保持する必要もあります。これが問題です。ブーストはシリアル化の方法を知りませんVertexId
。それらは STL マップにそのまま格納されます。std::map<string, VertexId>
これにより、文字列ルックアップはグラフ内の正しい頂点を返すことができます。これvertex_descriptor
は、基本的にグラフ内の特定の頂点を指す参照であるためです。
私の意図は、グラフとマップの両方をファイルにシリアル化することですが、vertex_descriptor
.