Maison > développement back-end > C++ > Pourquoi les plages standard utilisent-elles un intervalle semi-ouvert [début, fin) au lieu d'un intervalle fermé [début, fin] ?

Pourquoi les plages standard utilisent-elles un intervalle semi-ouvert [début, fin) au lieu d'un intervalle fermé [début, fin] ?

DDD
Libérer: 2024-12-21 00:19:11
original
158 Les gens l'ont consulté

Why Do Standard Ranges Use a Half-Open Interval [begin, end) Instead of a Closed Interval [begin, end]?

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!

source:php.cn
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal