如何在C++中实现数据结构的持久化? 如何使数据结构像树、图在C++中持久?p>
通常,您需要序列化结构,以便将其写入文件或数据库。如果您有一个自定义结构,那么您将需要编写方法来序列化和反序列化,即在结构中写入和读取。否则,如果使用了库中的结构,则可能已经存在反序列化方法 链表可以序列化为如下字符串:[1,2,3,4,5]尝试或如何在C++中实现数据结构的持久化? 如何使数据结构像树、图在C++中持久?p>,c++,data-structures,persistence,C++,Data Structures,Persistence,通常,您需要序列化结构,以便将其写入文件或数据库。如果您有一个自定义结构,那么您将需要编写方法来序列化和反序列化,即在结构中写入和读取。否则,如果使用了库中的结构,则可能已经存在反序列化方法 链表可以序列化为如下字符串:[1,2,3,4,5]尝试或 你说的“持久”是什么意思?你是说把它写到磁盘上吗?在创建它的函数退出后保持它的活动状态?还有别的吗?我本以为这意味着一个不可变的持久数据结构,就像函数式语言一样。 struct S { /* ... */ }; //... ofstream
你说的“持久”是什么意思?你是说把它写到磁盘上吗?在创建它的函数退出后保持它的活动状态?还有别的吗?我本以为这意味着一个不可变的持久数据结构,就像函数式语言一样。
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();