Maison > développement back-end > C++ > le corps du texte

Les itérateurs de différents conteneurs peuvent-ils être comparés en C ?

Patricia Arquette
Libérer: 2024-11-01 14:35:29
original
535 Les gens l'ont consulté

Can Iterators from Different Containers be Compared in C  ?

Comparaison des itérateurs de différents conteneurs

En C , il est important de comprendre les principes régissant la comparaison des itérateurs lorsqu'il s'agit de différents conteneurs. La question se pose : "Est-il acceptable de comparer des itérateurs de conteneurs distincts ?"

Pour y répondre, on se réfère à la norme C 11 (n3337) :

  • Général Exigences de l'itérateur : Un itérateur j est accessible à partir d'un itérateur i uniquement si l'application de i un nombre fini de fois donne i == j. Les itérateurs accessibles font référence à des éléments de la même séquence.
  • Itérateurs avant et égalité : Le domaine de l'opérateur d'égalité (==) pour les itérateurs avant est limité aux itérateurs provenant du même séquence sous-jacente.

Étant donné que RandomAccessIterator hérite des exigences de ForwardIterator, il s'ensuit que comparer des itérateurs de différents conteneurs est un comportement non défini.

Le numéro LWG n° 446 aborde spécifiquement ce problème et propose l'amendement suivant à la norme :

"Le résultat de l'évaluation directe ou indirecte d'une fonction de comparaison ou de l'opérateur binaire avec deux valeurs d'itérateur comme arguments obtenus à partir de deux plages différentes r1 et r2 n'est pas défini, sauf si explicitement décrit autrement."

Cet amendement souligne que comparer des itérateurs de différents conteneurs, à moins qu'ils ne soient des sous-plages d'une plage commune, est un comportement indéfini.

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
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!