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 :
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?...
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; }
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
Partager