J'ai écrit cette fonction pour tracer un certain point dans un arbre topologique. Cependant, pour une raison quelconque. C'est infini.Récursion en utilisant STL?
int electricity(int x){
multimap<int,entita,greater<int> >::reverse_iterator it = siet.rbegin();
advance(it,x-1);
if((*it).second.z=='E') return (*it).second.i;
return electricity((*it).first);
}
Je débogué les variables d'exécution et je suis certain à 100% que X est différent de (* il) .first. Pourtant, pour une raison quelconque, à chaque appel de fonction suivante, le x reste le même. Dans ce cas (4). Une idée pourquoi?
Juste comme une remarque: Vous pouvez déréférencer l'itérateur comme un pointeur: par ex. 'it-> second.z' est le même que' (* it) .second.z'. (Cela devient un peu compliqué lorsque l'itérateur déréférence à un type de pointeur mais ce n'est pas le cas ici) – Nobody
Combien de clés y a-t-il dans votre map? Se pourrait-il que 'advance 'change' it' pour être l'itérateur 'siet.rend()'? – Nobody
Je le savais :) mais je l'ai appris à mi-chemin. Et d'une certaine manière, c'est devenu ma préférence. –