2010-03-03 8 views
0

comment rendre les structures de données (comme les arbres, les graphiques) persistantes en C++?comment rendre les structures de données persistantes en C++?

+1

'Boost.serialization'? – kennytm

+5

Que voulez-vous dire par «persistant»? Voulez-vous dire l'écrire sur le disque? Le garder en vie après la fonction dans laquelle il a été créé? Autre chose? –

+0

J'aurais pensé que cela signifiait une structure de données persistantes immuable, comme dans le cas des langages fonctionnels. –

Répondre

3

En général, vous devrez sérialiser la structure afin de pouvoir l'écrire dans un fichier ou une base de données. Si vous avez une structure personnalisée, vous devrez écrire la méthode pour sérialiser et désérialiser (c'est-à-dire écrire et lire dans la structure). Sinon, si vous avez utilisé une structure d'une bibliothèque, il existe peut-être déjà des méthodes de (sérialisation).

par ex. Une liste liée peut sérialiser comme une chaîne comme suit: [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(); 

rapide et sale = D

Questions connexes