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 :
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 segmentation
En particulier
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
Que je ne comprends pas.

Merci pour votre aide.