Bonjour,
J'ai 2 set<const char *> pour lesquels je cherche à savoir si ils ont des valeurs communes.
Je fais donc un set_intersection sur ces deux ensembles, mais lors de l'exécution j'ai l'erreur
Voici le bout du code où se situe l'erreur, dites moi s'il vous en faut plus.Debug Assertion Failed
...
Expression : sequence not ordered
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 set<const char*,ltstr> *** tmpCluster; // stocke les objets de la colocation classés par caracteristique/cluster/caracteristique associée tmpCluster = new set <const char *, ltstr>**[itCand->size()]; for (j=0;j<itCand->size();j++) { tmpCluster[j] = new set <const char *, ltstr>*[(*freqFeatures->find((*itCand)[j])).second.nbCluster]; for (i=0 ; i<(*freqFeatures->find((*itCand)[j])).second.nbCluster ; i++) { tmpCluster[j][i] = new set <const char *, ltstr>[itCand->size()]; } }Je ne trouve pas le message "sequence not ordered" très parlant étant donné que les éléments du tableau tmpCluster sont de type set et donc ordonnés.
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 vector<const char*> outSet; set<const char*,ltstr> tmpSet; set<const char*,ltstr>::iterator it; for (i=0;i<(*freqFeatures->find((*itCand)[caracClusterMax])).second.nbCluster;i++) { for (k=i+1;k<(*freqFeatures->find((*itCand)[caracClusterMax])).second.nbCluster;k++) { for (int l=0;l<itCand->size();l++) { set_intersection (tmpCluster[caracClusterMax][i][l].begin(),tmpCluster[caracClusterMax][i][l].end(), tmpCluster[caracClusterMax][k][l].begin(),tmpCluster[caracClusterMax][k][l].end(), back_inserter( outSet ) ); // cluster adaptation if (outSet.size() != 0 ) { ... } } }
en débuggant le programme au pas à pas, j'ai trouvé que l'erreur venait peut être du fait que tmpCluster.end() (ainsi que begin parfois) me retournent un pointeur incorrect (0xcdcdcdcd), mais la mémoire est allouée donc je ne comprends pas d'où cela peut venir.
Je vous remercie d'avance de votre aide.
Elise
Partager