J'ai cette situation:itérateur personnalisé: comment en garder la trace?
J'ai une classe qui garde la trace d'un tableau de pointeurs. J'ai construit un itérateur personnalisé qui boucle à travers ce tableau.
Mon problème est sur la façon de le rendre threadsafe, en particulier lors de l'incrémentation/décrémentation?
Voici un projet des parties pertinentes de ce que j'ai:
typedef fruit * iterator;
class fruits
{
private:
fruit ** flist;
int n; //keeps track of position in flist
int count; //number of fruits
public:
iterator begin() {n=0; return fruit[n];}
iterator end() {n=count; return fruit[n];}
iterator operator++()
{
return fruit[++n];
}
}
Le problème que je vois est que si deux parties du programme créent une des choses iterator ne fonctionnera pas. Comment C++ STL gère-t-il cela?
MISE À JOUR: J'ai trouvé l'erreur de mes habitudes. L'itérateur doit garder une trace de l'endroit où il se trouve. Pour cela, j'ai créé une classe d'itérateur intégrée dans ma classe principale. La vie est maintenant bonne.
Merci d'avoir sauvegardé l'état else dans l'itérateur lui-même. –