Mettre en œuvre une carte de chaînes

voix
0

Je dois mettre en œuvre une classe qui se comporte comme une carte de chaînes en utilisant l'arbre de recherche binaire. C'est la classe I mis en œuvre:

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

Pour être honnête , je ne sais pas comment mettre en œuvre la fonction getNextPair().
Si quelqu'un pouvait me aider , je vous en serais reconnaissant.

Créé 06/03/2011 à 22:13
source utilisateur
Dans d'autres langues...                            


2 réponses

voix
1

Votre interface est un itérateur interne. Vous devez garder une sorte de pointeur à l'endroit où vous êtes dans l'itération, et le mettre dans getFirstPair ().

Une fois que vous ajoutez cela, getNextPair () va juste à la suivante. Il est un peu difficile de le faire, mais c'est votre mission, alors je laisse à vous.

La réelle std::maputilise un itérateur externe - qui maintient l'état de l'itération séparée de la structure de données. Le principal avantage est d' être capable d'avoir plus d'une itération simultanée.

Créé 06/03/2011 à 22:22
source utilisateur

voix
1

Sans jeter de l'algorithme pour getNextPair, vous aurez besoin de garder une sorte de itérateur qui pointera à la paire « courant ». Une fois que vous avez obtenu que, afin de comprendre l'algorithme pour la paire suivante vous dessiner un arbre avec des nœuds et voir comment on peut trouver le nœud suivant dans l'arbre donné un nœud dans l'arborescence.

Créé 06/03/2011 à 22:46
source utilisateur

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