6 Stimmen

Laden/Speichern von C++-Klasseninstanzen (unter Verwendung von STL-Containern) auf der Festplatte

Ich habe eine C++-Klasse, die einen hierarchisch organisierten Datenbaum darstellt, der sehr groß ist (~Gb, im Grunde so groß, wie ich im Speicher wegkommen kann). Es verwendet eine STL-Liste, um Informationen an jedem Knoten plus Iteratoren zu anderen Knoten zu speichern. Jeder Knoten hat nur einen Elternteil, aber 0-10 Kinder. Abstrahiert sieht es in etwa so aus:

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
};

Ich möchte die load() und save() auf der Festplatte zu implementieren, und es sollte ziemlich schnell sein, aber die offensichtlichen Probleme sind:

  1. Ich kenne die Größe nicht im Voraus;

  2. Die Daten enthalten Iteratoren, die flüchtig sind;

  3. Meine Unkenntnis von C++ ist ungeheuer groß.

Kann jemand eine reine C++-Lösung vorschlagen?

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X