Bonjour à tous,
Je ne suis pas spécialement entraîné en C++ et je galère sur les itérateurs. Ca fait un petit moment que j'ai localisé une erreur que je ne comprends pas. Si vous pouviez m'aider à la résoudre...
Il s'agit d'un bout de programme qui tente de lire deux listes imbriquées. Je m'explique :
Dans la classe keyframespace il y a une liste statique de keyframespace. Chaque keyframespace a une map associant des String à des Quaternion.
Je souhaite accéder aux quaternions de manière efficace, cad parcourir le moins de fois possible la liste.
Du coup, j'esssaie de parcourir la liste de keyframespace, en effectuant un calcul sur chaque Quaternion de la map du-dit Keyframespace.
Ce qui donne un truc comme ça :
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
25 list<Keyframespace>::const_iterator iter = (Keyframespace::getKeyFrameSpace()).begin(); printf("Boucle principale entrée %f, %f, %f, %f \n", iter->getThetaX(), iter->getThetaY(), iter->getDx(), iter->getDy()) ; while (iter != Keyframespace::getKeyFrameSpace().end()) { printf("Boucle principale entrée %f, %f, %f, %f \n", iter->getThetaX(), iter->getThetaY(), iter->getDx(), iter->getDy()) ; for( Keyframedesign::Keyframedesign_::const_iterator iterDesign = (*iter).getK()->Keyframe_.begin() ; iterDesign !=iter->getK()->Keyframe_.end();) { printf("Ici AVANT : %f, %f, %f, %f \n", iter->getThetaX(), iter->getThetaY(), iter->getDx(), iter->getDy()) ; printf(iterDesign->first) ; /* Calculs n'affectant pas la boucle */ ++iterDesign ; } printf("Ici APRES: %f, %f, %f, %f \n", iter->getThetaX(), iter->getThetaY(), iter->getDx(), iter->getDy()) ; ++iter ; printf("Sortie de boucle interne\n") ; } printf("Sortie de boucle principale\n");
J'ai le résulat suivant :En particulier
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14 Boucle principale entrée 0.000000, 0.000000, 0.000000, 0.000000 Boucle principale entrée 0.000000, 1.000000, 0.000000, 0.000000 Ici AVANT : 0.000000, 1.000000, 0.000000, 0.000000 BD Ici AVANT : 0.000000, 1.000000, 0.000000, 0.000000 BG Ici AVANT : 0.000000, 1.000000, 0.000000, 0.000000 JD Ici AVANT : 0.000000, 1.000000, 0.000000, 0.000000 JG Ici APRES: 0.000000, 1.000000, 0.000000, 0.000000 Sortie de boucle interne Boucle principale entrée 0.000000, 0.000000, 0.000000, 0.000000 Erreur de segmentationQue je ne comprends pas.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Boucle principale entrée 0.000000, 0.000000, 0.000000, 0.000000 Boucle principale entrée 0.000000, 1.000000, 0.000000, 0.000000
Merci pour votre aide.
Partager