私は非常に大きい階層的に編成されたデータツリーを表すC++クラスを持っています(〜Gb、基本的にはメモリ内で逃げることができるのと同じ大きさです)。STLリストを使用して、各ノードの情報と他のノードへのイテレータを格納します。各ノードには親が1つだけありますが、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++ソリューションを提案できますか?