2012-01-15 76 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() 
} 
相關問題