问题描述:由于想保存数据结构在任意时刻的快照(由用户来触发),需要对当前的数据状态进行深度复制,但是,该结构较为复杂,还没有找到有效的方法来实现。
数据结构代码:
struct value {
value* prev;
value* next;
int value;
};
struct entry {
entry* prev;
entry* next;
value* values;
char key[MAX_KEY_LENGTH];
};
struct snapshot {
snapshot* prev;
snapshot* next;
entry* entries;
int id;
};
如下图描述的那样,1、2、3分别是三个时刻的快照,其保存的是三个时刻的current database state;current database state是当前用户编辑数据的环境。现在的问题就是,如何将current database state复制一份并保存。同时,快照1、2、3还可以被rollback到current database state。
一个方案是把数据存成c++里的
vector
, 然后serialize
, 比如用boost::serialization
.