C++ - Problème parcours d'une map<int, pair<Point, Point>>
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 :
Code:
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>> |
Le construction de MyPoint :
Code:
1 2 3
| MyPoint::MyPoint(int id, double x, double y, double z) : idPoint(id), coordX(x), coordY(y), coordZ(z)
{
} |
Je rempli ma map :
Code:
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++;
} |
Pour le remplissage ci-dessus, je procède de la manière suivante :
- 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 :
Code:
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();
} |
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.
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 :
Code:
pipe 1 idPoint 1 : 1 - x : 3 - y : 3 - z : 9
Au lieu de :
Code:
pipe 1 idPoint 1 : 1 - x : 1 - y : 5 - z : 5
Ca me prend à partir de la position au milieu de mes vectors ! C'est un vrai mystère...
Si vous avez une solution à ce problème :)
Merci d'avance pour vos réponses