Vois ça dans l’autre sens, peut être qu’il manque une introduction à cette partie du cours. Le cours commence par
Vous débutez complètement et n’avez qu’une vague idée de ce que peut bien être la programmation ? On vous a dit d’en apprendre plus sur le C++ ? Alors ce tutoriel est fait pour vous.
Donc il est fait pour toi, et si tu a du mal avec une partie, c’est une bonne indication pour les auteurs que la partie peut être améliorée. Et trouver la formulation qui t’aidera peut aider à améliorer le tuto.
Je proposais dans ma réponse hier des questions sur le début de la partie, tu m’as répondu que tu avais compris pour array et vector, mais pas pour le reste. Une chose qui ne me semble pas évidente en lisant le cours, c’est: quel problème cherche-t-on à résoudre ? Pourquoi est ce qu’on veut faire autre chose que des vector ?
Prenons l’exemple d’un dictionnaire, c’est une centaine de milliers de mots, avec leurs définitions. On peut les mettre dans un vector, mais le Français est une langue vivante, assez souvent de nouveaux mots apparaissent. Avec un vector, il faut décaler les milliers de mots suivants de une position, puis ajouter le mot et ses définitions. Ou alors ajouter le mot à la fin, mais dans ce cas les mots ne sont plus dans l’ordre alphabétique, et c’est très embêtant pour rechercher les définitions d’un mot.
Pour régler le problème de l’insertion, on a inventé les listes chaînées, qu’on appelle simplement list, mais elles ont un problème: on ne sait pas rechercher facilement un mot dedans. Je ne vais pas expliquer pourquoi ici, mais on a inventé d’autres façons un peu plus compliquées de ranger les choses pour pouvoir facilement ajouter des nouveaux mots, tout en étant de chercher rapidement un mot. Dans mon cas du dictionnaire, en C++ il y en a une qui s’appelle map, qui ressemble à celui qui s’appelle dictionary en Python (pas de chance, même des conteneurs identiques n’ont pas forcément le même nom dans différents langages).
Et donc un conteneur, c’est quoi ? C’est un nom générique pour décrire plein de façons de ranger des objets, et dans lesquelles il va être plus ou moins facile d’accéder à un élément, d’en ajouter, d’en retirer, ou en rechercher.
Et maintenant revenons aux itérateurs: si je veux afficher tous les mots de la langue Française, sur un vector, c’est facile, j’en affiche un, je me décale d’un mot, j’affiche le suivant. Sur une list, c’est différent, et sur une map, ça marche encore différemment. Pourtant, tout ce que je veux, c’est écrire chaque mot. Ce serait pratique de pouvoir écrire le même code sans se soucier de savoir comment celui qui a construit le dictionnaire le gère. Et bien un itérateur c’est ça: peut importe comment un dictionnaire est implémenté, je veux pouvoir prendre le premier mot, en faire ce que je veux (par exemple l’afficher), et passer au suivant, sans savoir ce que veut dire en mémoire "passer au suivant", et sans avoir besoin de réécrire mon code parce que le créateur du dictionnaire a décidé de remplacer un vector par une map pour que le code aille plus vite (même si le créateur c’est aussi moi).
Je ne sais pas si ça t’aide à comprendre pourquoi ce chapitre est là, mais c’est vrai qu’il apporte une solution très génériques à des problèmes que tu n’as probablement pas rencontrés, il y a facilement de quoi être perdu.