2012-01-15 38 views
1

我有一个boost:labeled_graph对象类型,似乎没有必要的序列化功能。如何序列化类型boost :: labeled_graph

error: ‘class boost::labeled_graph<boost::adjacency_list<boost::listS, boost::listS, 
boost::undirectedS, Space, spaceEdge, graphProperties, boost::listS>, std::basic_string<char, 
std::char_traits<char>, std::allocator<char> >, boost::defaultS>’ has no member named 
‘serialize’ 

任何方式将labeled_graphs序列化到文件?

+0

起初,你可以检查是否labeled_graph真的没有在升压这样的功能资源。然后你可以尝试更新版本的boost。它可以有这样的功能。如果不是,你应该自己动手。快速和肮脏的方法是将标记图分成两部分:通常的增强图和附加信息的容器,这对于标记图是特别的。然后,您可以从标签图形创建这两个数据结构,并以标准方式对它们进行序列化。我不知道labeled_graph和adjacency_list之间的差异。所以可能会有一个更简单快捷的方法。 – Eugen 2012-01-15 11:02:08

回答

3

我以前没见过,但是labeled_graph looks like a thin wrapper围绕着您选择的另一张图表,在这种情况下,您选择了adjacency_list。还有的通过<graph/adj_list_serialize.hpp>序列化邻接表提振支撑,所以看起来你可以使用free function serializing相当理智这一点,是这样的:

template<class Archive> 
inline void serialize(
    Archive & ar, 
    my_grap_typedef & g, 
    const unsigned int /*file_version*/ 
){ 
    ar & g.graph() 
} 
相关问题