Donc, se donner un objet représentant “une position dans une séquence” sur lequel il soit possible de faire les opérations habituelles “avancer à l’élément suivant” ou “obtenir le contenu de l’élément actuel” comme si on avait affaire à un “bon vieux pointeur dans un tableau C”, c’était l’idée de std::{whatever}::iterator.
Si c’est sympa à la base (surtout pour ceux qui n’ont jamais fait de programmation fonctionnelle et pour qui les manipulations de listes à coup de grep ou map semblent occultes), en revanche, ça donne parfois des effets troublants dans la mesure où l’itérateur risque (s’il y a la moindre faille dans votre vigilance) de parcourir un objet qui n’existe plus.
Du moins, c’est l’explication la plus probable des fantaisies que j’observe dans mon éditeur d’animations.