Comment itérer/compter pour une multimap<string,string>

Ma classe comme ceci:

class Outgoing
{
    multimap<string,string> outgoing;

    public:
    void makeConnection(string key, string value)
    {
        outgoing.insert(pair<string,string>(key,value));
    }

    void iterate()
    {
        multimap<string, string>::iterator it;
        multimap<string, string>::iterator it2;
        pair<multimap<string,string>::iterator,multimap<string,string>::iterator> ret;
        for (it = outgoing.begin();it != outgoing.end();++it)
        {
            ret = outgoing.equal_range((*it));  ??????
            for (it2=ret.first; it2!=ret.second; ++it2)
            {
                ???????

             }
        }
    }
};

de fond:

Je veux représenter un graphe qui peut avoir plusieurs nœuds. La clef ne le répétez pas, mais peut avoir plusieurs valeurs.

str1  ----> val1
str1  ----> val2
str2 -----> val3

Je veux savoir comment puis-je obtenir le nombre de valeurs pour une touche particulière? pour, par exemple, dans la question ci-dessus , pour str1 il sera 2?

Comme vous pouvez le voir , j'ai essayé de faire quelque chose après quelques recherches, mais en vain.

Quel est le problème avec mon code?

grâce

EDIT:::::: après templatetypedef commentaire, j'ai édité le code:

for (it = outgoing.begin();it != outgoing.end();++it)
{
    cout<< (*it).first << " "<<  outgoing.count((*it).first); 

}

Je peux obtenir le nombre, mais la clé("str1") vient deux fois. Donc la réponse que je vois est 2 2 1.

J'apprécierais beaucoup, si quelqu'un enseigne-moi comment itérer dans une telle manière, je suis d'une seule clé. BTW, merci, templatetypedef

OriginalL'auteur Anon | 2011-09-15