Derzeit verwende ich einen Iterator, um einen Vektor zu durchsuchen und seine Elemente zu testen. Ich greife auf die Elemente mitKann ich Pointer-Arithmetik auf einem STL :: vector :: iterator verwenden
std::vector<int>::iterator it;
if (*it == 0);
Kann ich die gleiche Zeigerarithmetik Stil Logik verwenden, um auch das nächste Element zu testen (ohne meinen Iterator zu verändern)?
Ich muss zuerst sehen, ob es den Iterator außerhalb der Grenzen
if (it != myvec.end())
Dann testen Sie sowohl aktuelle Element und nächste Element
if (*it == 1 && *(it + 1) == 1)
Wird diese Arbeit, wie ich aus mit Zeigern erwarten vorantreiben wird?
Also, ich kann keine arithmetische Operation auf "list :: iterator", richtig? – Alcott
@Alcott - richtig. Ein list :: iterator ist ein bidirektionaler Iterator und unterstützt keinen Direktzugriff. Sie können 'std :: advance' verwenden, um die Bewegung mit einem einzelnen Aufruf auszuführen, aber die Komplexität des Fortschritts ist 'O (n)' für Listen (wo es für einen Vektor' O (1) 'wäre). –