Heim > Backend-Entwicklung > C++ > Können Iteratoren aus verschiedenen Containern in C verglichen werden?

Können Iteratoren aus verschiedenen Containern in C verglichen werden?

Patricia Arquette
Freigeben: 2024-11-01 14:35:29
Original
613 Leute haben es durchsucht

Can Iterators from Different Containers be Compared in C  ?

Vergleich von Iteratoren aus verschiedenen Containern

In C ist es wichtig, die Prinzipien zu verstehen, die den Iteratorvergleich beim Umgang mit verschiedenen Containern regeln. Es stellt sich die Frage: „Ist es akzeptabel, Iteratoren aus unterschiedlichen Containern zu vergleichen?“

Um dies zu beantworten, verweisen wir auf den C 11-Standard (n3337):

  • Allgemeines Iteratoranforderungen: Ein Iterator j ist nur dann von einem Iterator i aus erreichbar, wenn die endliche Anwendung von i zu i == j führt. Erreichbare Iteratoren beziehen sich auf Elemente derselben Sequenz.
  • Vorwärts-Iteratoren und Gleichheit: Die Domäne des Gleichheitsoperators (==) für Vorwärts-Iteratoren ist auf Iteratoren beschränkt, die von der stammen gleiche zugrunde liegende Sequenz.

Da RandomAccessIterator die Anforderungen von ForwardIterator erbt, folgt daraus, dass der Vergleich von Iteratoren aus verschiedenen Containern ein undefiniertes Verhalten ist.

Das LWG-Problem Nr. 446 befasst sich speziell mit diesem Problem und schlägt vor die folgende Änderung des Standards:

"Das Ergebnis der direkten oder indirekten Auswertung einer Vergleichsfunktion oder des Binäroperators mit zwei Iteratorwerten als Argumenten, die aus zwei verschiedenen Bereichen r1 und r2 erhalten wurden, ist undefiniert, sofern nicht ausdrücklich angegeben anders beschrieben.“

Diese Änderung hebt hervor, dass der Vergleich von Iteratoren aus verschiedenen Containern, sofern es sich nicht um Unterbereiche eines gemeinsamen Bereichs handelt, undefiniertes Verhalten darstellt.

Das obige ist der detaillierte Inhalt vonKönnen Iteratoren aus verschiedenen Containern in C verglichen werden?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage