Heim >Backend-Entwicklung >C++ >Können Iteratoren aus verschiedenen Containern in C verglichen werden?
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):
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!