dizeleri bir haritasını uygulamak

oy
0

Ben ikili arama ağacı kullanarak dizeleri bir harita gibi davranan bir sınıf uygulamak zorunda. Bu benim hayata sınıftır:

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

Dürüst olmak gerekirse ben işlevini nasıl uygulanacağını bilmiyorum getNextPair().
Birisi bana yardımcı olabilir Eğer memnun olurum.

Oluştur 06/03/2011 saat 22:13
kaynak kullanıcı
Diğer dillerde...                            


2 cevaplar

oy
1

Kişisel arayüzü dahili yineleyici olduğunu. Sen getFirstPair bunu sen tekrarında olduğu yere pointer çeşit tutmak ve ayarlamak gerekir ().

Bunu ekledikten sonra, getNextPair () sadece bir sonrakine geçer. Bunu yapmak biraz zor, ama bu ödeviniz, bu yüzden size bırakıyorum.

Gerçek std::mapveri yapısından ayrı yineleme durumunu tutar - Harici bir yineleyici kullanır. Önemli bir avantajı, birden fazla eşzamanlı yinelemeyi olması mümkün ediliyor.

Cevap 06/03/2011 saat 22:22
kaynak kullanıcı

oy
1

Sadece getNextPair için algoritma atma olmadan, "geçerli" çiftine işaret edecektir iç yineleyici çeşit tutmak gerekir. Elindeki sonra, söz konusu kendinize bazı düğümlerle bir ağaç çizmek sonraki çifti için algoritma anlamaya ve bir ağacındaki herhangi düğüm verilen ağaçta sonraki düğümü nasıl bulabileceğinizi görmek için.

Cevap 06/03/2011 saat 22:46
kaynak kullanıcı

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