Tout d'abord, pour répondre à vos questions:
- Pas de. En fait, je l'ai soutenu ailleurs que les itérateurs sont les plus importants et fondamentaux du concept de l'informatique jamais. J' (contrairement à Andrei) pensent également que les itérateurs sont intuitives.
- Oui, certainement, mais qui ne devrait pas venir comme une surprise.
- Hmm. Regarder coup de pouce.Gamme et C++0x – n'ont-ils pas déjà?
Andrei contribution importante ici est juste de dire: abandon de la notion de itérateurs tout à fait, voir plages non pas seulement comme une commodité wrapper, mais plutôt comme un noyau de construire. D'autres langues ont déjà fait (beaucoup Andrei concepts juste écho .NET, LINQ ou Python itérateurs), mais ils ont tous offrent seulement les plages de sortie. Andrei plaide pour différents types de gammes, comme les classiques itérateur catégories.
Dans cette perspective, il est étrange qu'il commence par se moquer du caractère arbitraire de ces itérateur catégories.
Je pense aussi que ses exemples sont éteintes, surtout son fichier de la copie: oui, l'itérateur variante est une énorme amélioration par rapport à l'1975 code. Il réduit une boucle compliquée avec condition d'arrêt vers le bas pour une déclaration. De quoi il est vraiment question ici est juste la syntaxe. Eh bien, excusez-moi: nous parlons de C++ ici – bien sûr, la syntaxe est laid. Et oui, à l'aide de plages ici est une amélioration, mais seulement du point de vue syntaxique.
Je pense aussi que Andrei find
mise en œuvre est à l'arrêt. Ce qu'il définit réellement il y a l' DropUntil
de l'opération (la dénomination est dur!) à partir de LINQ. L' find
opération devrait vraiment revenir un ou zéro des éléments (ou un itérateur!). Fuir les itérateurs ici n'est pas utile à mon avis car on peut vouloir modifier directement la valeur au lieu de le copier. Retour d'un élément de la gamme seulement ajoute de la surcharge sans avantage. Faire Andrei chemin est mauvais, car alors le nom de la méthode est tout simplement faux et trompeur.
Cela dit, je suis simplement d'accord avec Andrei dans presque tous les points. Les itérateurs, tout en étant mon animal de compagnie le concept de l'informatique, sont certainement un grand syntaxiques de charge et de nombreuses plages (surtout infinie générateurs) peut (et doit) être mis en œuvre facilement sans eux.