Pourquoi les plages de la norme sont [début, fin) au lieu de [début, fin]
Dans la norme, la fin() la fonction est définie comme étant située au-delà de la fin d'une plage plutôt qu'à la fin réelle. Cette décision a fait l'objet de débats, avec plusieurs raisons impérieuses avancées pour sa défense.
L'un des principaux arguments, comme l'a déclaré avec éloquence Dijkstra, tourne autour de la simplicité de calculer la taille de la fourchette comme la différence entre la fin et le début. De plus, l’inclusion de la limite inférieure (début) est considérée comme plus naturelle, en particulier dans les scénarios où les séquences dégénèrent en séquences vides. À l'inverse, exclure la limite inférieure nécessiterait l'introduction d'une valeur sentinelle « une avant le début », ce qui introduirait une complexité inutile.
La convention [début, fin) simplifie également la gestion des éléments imbriqués ou appels itérés à des constructions basées sur la plage, leur permettant de s'enchaîner naturellement. En revanche, une plage doublement fermée entraînerait des erreurs ponctuelles et un code encombrant et bruyant. Considérons, par exemple, une partition de [n0, n1)[n 1, n2)[n2,n3).
De même, la boucle d'itération standard pour (it = start; it != end; it) exécute fin - début fois. Cela deviendrait beaucoup moins lisible si les deux extrémités étaient inclusives, en particulier lorsqu'il s'agissait de plages vides.
Enfin, la convention de comptage à base zéro s'aligne bien avec l'approche [début, fin). Lorsqu'on lui présente une plage de N éléments (tels que les éléments d'un tableau), zéro sert de « début » naturel, permettant à la plage d'être représentée par [0, N), évitant ainsi les décalages ou corrections inutiles.
En conclusion, la convention [début, fin) des gammes est le résultat de choix de conception soigneusement réfléchis. Il garantit la simplicité des calculs de taille de plage, le naturel lors du traitement des séquences vides, la facilité de gestion des constructions imbriquées basées sur des plages et l'alignement avec le comptage à base zéro.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!