Etant habitué à parcourir un tableau avec la boucle "for"
Pour parcourir avec un "for", tu dois implicitement connaitre la nature de ta structure de donnees. L'idee meme des iterateurs est d'abstraire les elements contenus du container qui les contient. Tant que t'as acces a une iterateurs, tu peux parcourir les donnees sans savoir comment elles sont stockes en internet (tableau, liste, arbre, etc.)
Pour moi, on crée un template lorsqu'on ne désire pas spécifier le type des paramètres entrés dans la fonction
Oui - mais la motivation pour vouloir ne pas specifier le type de parametre, c'est d'ecrire en une seule fois un algo ou une structure de donnees qui marche pour *plusieurs* types de donnees.
Quand tu definis un template<params>, pour chaque combinaison de type de parametres utilisant ce template, le pre-processeur genere le code correspondant a ces types specifiques