Salut à tous,

J'ai à nouveau une question concernant le C++.

Je parcoure une map très pour interroger un a un tous les éléments de la map (qui sont des entités communicantes). Je fais ça avec un pointeur.

Le problème c'est que le medium de communication est plutôt pourrave, et parfois une entité ne me répond pas. Par bonheur, j'ai un système d'ACK qui me permet de détecter ça. Lorsqu'une entité passe en NACK j'aimerai qu'elle retente un peu, histoire de voir si elle est décédée (R.I.P.) ou si c'est mon médium qui fait des siennes.

Voilà le code que j'utilise (en simplifié), mais le --pos ne réalise pas l'effet escompté :

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
 
 
int essai_max = 5;
int essai = 0;
 
std::map<std::string,entite>::iterator pos;
 
for (pos = entite_list.begin(); pos != entite_list.end(); ++pos)
{
    if (entite.repond())
        /* traitement */
    else if (essai < essai_max)
    {
        --pos; //ici, naivement, je me dis que le meme va passer deux fois, vu que je recule ce que j'avance (pos + 1 - 1 = pos) 
        essai++;
    }       
}
Et en pratique, je n'observe pas ce que je veux obtenir.

Quelqu'un peut-il m'expliquer le souci ?

Merci beaucoup et bonne soirée à vous !

Cyril