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

Debug Assertion Failed

...

Expression : sequence not ordered
Voici le bout du code où se situe l'erreur, dites moi s'il vous en faut plus.

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()];
       }
}
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 )
		{
			...
		}
	}
}
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.

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