Im Bereich der Iteratoren erfordert die Löschfunktion einen Iterator, was Sie bei der Arbeit mit Reverse-Iteratoren in Schwierigkeiten bringt. Wie können Sie diese Herausforderung meistern und mithilfe von Reverse-Iteratoren Elemente aus einer Liste entfernen?
Gemäß dem C-Standard entspricht die Basis eines Reverse-Iterators, i.base(), dem Element vor dem Element, auf das gezeigt wird durch den umgekehrten Iterator, d. h. &*(reverse_iterator(i)) == &*(i - 1).
Daher wird zum Entfernen eines Elements eine Umkehrung verwendet Iterator müssen Sie den Offset des Basisiterators anpassen. Dies kann mit folgender Lösung erreicht werden:
m_CursorStack.erase(--(i.base()));
Alternativ bietet C 11 zwei zusätzliche Möglichkeiten:
1. Unveränderter Reverse Iterator:
m_CursorStack.erase(std::next(i).base());
2. Erweiterter Reverse-Iterator:
std::advance(i, 1); m_CursorStack.erase(i.base());
Wählen Sie die Lösung, die Ihren Anforderungen am besten entspricht, damit Sie mühelos Elemente aus einer Liste löschen und gleichzeitig den Komfort von Reverse-Iteratoren nutzen können.
Das obige ist der detaillierte Inhalt vonWie kann ich Reverse-Iteratoren verwenden, um Elemente aus einer Liste in C zu löschen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!