J'ai réalisé une implémentation List of Lists d'une matrice sparse, et j'ai implémenté iterator et const_iterator avec succès.
L'itérateur ne pointe pas directement vers le conteneur où la valeur est stockée, mais crée une structure, nommée élément, ainsi définie :
template <typename T>
struct element{
int i,j; //Coordinates
T value;
};
Mais il y a un problème avec l'itérateur : lorsque je l'utilise pour modifier les valeurs dans la structure, cela devrait même affecter la structure interne de la matrice. J'ai pensé à stocker les valeurs originales dans d'autres attributs privés de l'itérateur, puis à les comparer avec les données stockées dans la structure : si quelque chose est différent, j'appelle les méthodes de la matrice pour modifier la structure interne réelle.
La seule chose qui me manque, c'est de savoir à quel moment il faut appeler cette méthode à l'intérieur de la classe des itérateurs.