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 : 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>>
Le construction de MyPoint :
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)
{
}
Je rempli ma map :
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++;
}
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 : 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();
}
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 : Sélectionner tout - Visualiser dans une fenêtre à part
pipe 1  idPoint 1 : 1 - x : 3 - y : 3 - z : 9
Au lieu de :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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