Bonjour,
J'avais ouvert un post qui ressemble à celui-ci dans le titre mais dans ce cas, le problème est tout autre.
Je dispose de :
Le construction de MyPoint :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 vector<tuple<int,int,int>> test; map<int, pair<MyPoint,MyPoint>> myMap; // La map que je remplie test = myPipingModel.getvectorIdPipePoint(); // vector de la forme vector<tuple<idPipe, idPoint1, idPoint2>>
Je rempli ma map :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 MyPoint::MyPoint(int id, double x, double y, double z) : idPoint(id), coordX(x), coordY(y), coordZ(z) { }
Pour le remplissage ci-dessus, je procède de la manière suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 int p=0; for (auto t = test.begin(); t != test.end(); ++t) // TODO : Problème de taille ici (changer j en 2*j) { myMap[get<0>(*t)] = make_pair(MyPoint(get<1>(*t), myPipingModel.getX(p), myPipingModel.getY(p), myPipingModel.getZ(p)), MyPoint(get<2>(*t), myPipingModel.getX(p+1), myPipingModel.getY(p+1), myPipingModel.getZ(p+1))); p++; }
- la clé c'est idPipe que je récupère dans test. Pour remplir la paire, je dispose de trois vectors (pour X, Y et Z) avec les coordonnées. Donc pour le premier passage de boucle, je prend la position 0 de chaque vector et ainsi de suite pour le 2ème pipe et 3ème pipe.
J'affiche ensuite le contenu de ma map :
Et là....il se passe quelque chose de très étrange : j'obtiens bien les bons pipe : 1, 2, 3, ... mais pour les affichage des coordonées, cela m'affiche les x, y et z du milieu de mes vectors.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 for (auto p1 = myMap.begin(); p1 != myMap.end(); ++p1 ) { cout << "pipe " << p1->first << endl; cout << "IdPoint 1 : " << (p1->second).first.getIdPoint() << " - x : " << (p1->second).first.getCoordX() << " - y : " << (p1->second).first.getCoordY() << " - z : " << (p1->second).first.getCoordZ() << endl; cout << "IdPoint 2 : " << (p1->second).second.getIdPoint() << " - x : " << (p1->second).second.getCoordX() << " - y : " << (p1->second).second.getCoordY() << " - z : " << (p1->second).second.getCoordZ() << endl; cout << endl; getchar(); }
Par exemple, j'ai les coordonées suivantes dans mes vectors de coordonées :
Pour X : 1 2 3 5 6
Pour Y : 5 2 3 6 9
Pour Z : 5 8 9 6 3
et bien cela va m'afficher :
Au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part pipe 1 idPoint 1 : 1 - x : 3 - y : 3 - z : 9
Ca me prend à partir de la position au milieu de mes vectors ! C'est un vrai mystère...
Code : Sélectionner tout - Visualiser dans une fenêtre à part pipe 1 idPoint 1 : 1 - x : 1 - y : 5 - z : 5
Si vous avez une solution à ce problème
Merci d'avance pour vos réponses
Partager