Implementieren Sie eine Karte von Strings

stimmen
0

Ich muss eine Klasse implementieren, die wie eine Karte von Strings mit binärer Suchbaum verhält. Dies ist die Klasse I umgesetzt:

template<class T>
class StringMapper {
private:
    // Pair
    struct Pair {
        std::string el1;
        T el2;
    };

    // Nod
    struct Node {
        Pair* data;
        Node* left;
        Node* right;
        Node()
        {
            data = new Pair;
        }
        ~Node()
        {
            delete data;
        }
        int nod_size()
        {
             // code here
        }
    };
    Node* root;
public:
    StringMapper()
    {
        root = 0;
    }
    ~StringMapper() {}
    void insert(std::string from, const T& to)
    {
        // code here
    }

    bool find(std::string from,const T& to) const
    {
        return find(root, to);
    }

    bool find(Node* node, const T& value) const
    {
        // code here
    }

    bool getFirstPair(std::string& from, T& to)
    {
        if(root != 0)
        {
            from = root->data->el1;
            to = root->data->el2;
            return true;
        }
        return false;
    }
    bool getNextPair(std::string& from, T& to)
    {
        if(root != 0)
        {

        }
        return false;
    }

    int size() const
    {
        return root->nod_size();
    }
};

Um ehrlich zu sein , weiß ich nicht , wie die Funktion zu implementieren getNextPair().
Wenn mir jemand helfen könnte ich es schätzen würde.

Veröffentlicht am 06/03/2011 um 22:13
quelle vom benutzer
In anderen Sprachen...                            


2 antworten

stimmen
1

Ihre Schnittstelle ist ein interner Iterator. Sie brauchen eine Art Zeiger auf zu halten, wo Sie in der Iteration sind, und legen Sie es in getFirstPair ().

Sobald Sie diese Erweiterung, getNextPair () geht nur auf die nächste. Es ist etwas schwierig, dies zu tun, aber das ist Ihre Aufgabe, so dass ich überlasse es Ihnen.

Die tatsächliche std::mapverwendet einen externen Iterator -, die den Zustand der Iteration getrennt von der Datenstruktur hält. Der große Vorteil ist die Möglichkeit , mehr als eine gleichzeitige Iteration haben.

Beantwortet am 06/03/2011 um 22:22
quelle vom benutzer

stimmen
1

Ohne nur den Algorithmus für getNextPair zu werfen, müssen Sie irgendeine Art von internem Iterator zu halten, die auf das „aktuelle“ Paar verweisen. Einmal bekam man, dass, um den Algorithmus für das nächste Paar ziehen Sie sich einen Baum mit einigen Knoten auf Figur und sehen, wie man den nächsten Knoten in dem Baum jeden Knoten in dem Baum gegeben finden.

Beantwortet am 06/03/2011 um 22:46
quelle vom benutzer

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more