2010-03-03 72 views
0

如何使數據結構(如樹,圖)持久在c + +?如何使數據結構在C++中持久化?

+1

'Boost.serialization'? – kennytm 2010-03-03 18:54:43

+5

'持久'是什麼意思?你的意思是寫入磁盤?在創建函數後保持活動狀態?還有別的嗎? – 2010-03-03 19:59:41

+0

我會認爲這意味着一個不可變的持久數據結構,就像函數式語言一樣。 – 2018-02-05 05:29:33

回答

3

通常,您需要對結構進行序列化,以便將其寫入文件或數據庫。如果您有自定義結構,那麼您需要編寫該方法以序列化和反序列化(即寫出並讀入結構)。否則,如果您使用了庫中的結構,則可能已經有(de)序列化方法。

例如。鏈接列表可能會串行化爲如下的字符串:[1,2,3,4,5]

1
struct S { 
    /* ... */ 
}; 

//... 

ofstream out("temp.aux"); 

S s; 

char* c = reinterpret_cast<char*>(&s); 
out << sizeof(s); 
for(int i = 0; i < sizeof(s); ++i) { 
    out << c[i]; 
} 
out.close(); 

// ... 

ifstream in("temp.aux"); 
int size; 
in >> size; 
char* r = new char[size]; 
for(int i = 0; i < size; ++i) { 
    in >> r[i]; 
} 
S* s = reinterpret_cast<S*>(r); 
in.close(); 

快速和骯髒= d