我有一个代表层次化组织数据树的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++的解决方案吗?