我有一个 C++ 类,它表示一个非常大的分层组织的数据树(〜 Gb,基本上与我在内存中可以摆脱的一样大)。它使用一个 STL 列表来存储每个节点的信息以及其他节点的迭代器。每个节点只有一个父节点,但有 0-10 个子节点。抽象,它看起来像:
struct node {
public:
node_list_iterator parent; // iterator to a single parent node
double node_data_array[X];
map<int,node_list_iterator> children; // iterators to child nodes
};
class strategy {
private:
list<node> tree; // hierarchically linked list of nodes
struct some_other_data;
public:
void build(); // build the tree
void save(); // save the tree from disk
void load(); // load the tree from disk
void use(); // use the tree
};
我想实现 load() 和 save() 到磁盘,它应该相当快,但是明显的问题是:
我事先不知道尺寸;
数据包含易变的迭代器;
我对 C++ 的无知是惊人的。
有人可以建议一个纯 C++ 解决方案吗?