Bonjour à tous,
Ca fait pas mal de temps que je galère pour gérer une map de donnée dont la clé est une pair...
J'ai tenté de trouvé une réponse dans la FAQ, sur l'API de la librairie standard, sur le forum... Mais j'ai rien trouvé.

Voilà le problème :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
 
//Tout d'abord je declare un type de paire
typedef std::pair< int, int > vertexCouple;
//Ensuite je créer une map qui m'associe pour mes pair une arrête (Edge en anglais)  
std::map<vertexCouple, Edge*> mEdgeMap; 
 
//Puis la j'essai de trouvé une arrête existante via une pair de vertex que je lui
//passe en parametre avec la methode find et normalement il devrait y en avoir souvent
            std::map<vertexCouple, Edge*>::iterator cur  = mEdgeMap.find(vertexCouple(vertexNumber1, vertexNumber2));
 
            //Si y'a quelquechose c'est qu'on est pas a la fin, non?
             if(cur != mEdgeMap.end())
            {
                std::cout << "On a trouve une arrete differente " << std::endl;
                //On définis l'arrête mirroir pour les deux arrêtes
                edge->setMirrorEdge(mEdgeMap[vertexCouple(vertexNumber1, vertexNumber2)]);
                mEdgeMap[vertexCouple(vertexNumber1, vertexNumber2)]->setMirrorEdge(edge);
            }
            //sinon on rajoute simplement la paire a notre map et on créer l'arrête
            else
            {
                std::cout << "On a trouve une nouvelle arrete" << std::endl;
                mEdgeMap[vertexCouple(vertexNumber1, vertexNumber2)] = edge;
            }
Mon problème est qu'il ne "trouve" jamais rien avec la methode find (et il devrait!!). Alors je l'utilise peut-être mal? ou j'utilise peut-être mal mon iterator? Ou je n'ajoute pas de la bonne manière mon Edge à la map?...

Quoiqu'il en soit y'a un problème donc si quelqu'un pouvait m'aider j'en serai ravis .

Merci de m'avoir lu,
A bientot,
Andréas