Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/linux/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在C++中实现数据结构的持久化? 如何使数据结构像树、图在C++中持久?p>_C++_Data Structures_Persistence - Fatal编程技术网

如何在C++中实现数据结构的持久化? 如何使数据结构像树、图在C++中持久?p>

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

通常,您需要序列化结构,以便将其写入文件或数据库。如果您有一个自定义结构,那么您将需要编写方法来序列化和反序列化,即在结构中写入和读取。否则,如果使用了库中的结构,则可能已经存在反序列化方法

链表可以序列化为如下字符串:[1,2,3,4,5]

尝试或


你说的“持久”是什么意思?你是说把它写到磁盘上吗?在创建它的函数退出后保持它的活动状态?还有别的吗?我本以为这意味着一个不可变的持久数据结构,就像函数式语言一样。
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();