Heim >Backend-Entwicklung >C++ >Wie lösche ich Elemente aus einer Liste mithilfe von Reverse-Iteratoren in C?
Konvertieren eines umgekehrten Iterators zum Löschen aus einer Liste
Um ein Element aus einer Liste mithilfe einer Löschoperation zu löschen, sind reguläre Iteratoren erforderlich. Bei Verwendung von Reverse-Iteratoren ist jedoch eine Konvertierung erforderlich.
Der Standard definiert eine Beziehung zwischen einem Reverse-Iterator (i) und seinem entsprechenden regulären Iterator (i.base()):
& *reverse_iterator(i) == &*(i - 1)
Diese Beziehung ermöglicht die Konvertierung eines Reverse-Iterators in einen regulären Iterator durch Anwenden eines Offsets zu i.base(). Um ein Element mithilfe eines umgekehrten Iterators zu löschen, kann daher der folgende Code verwendet werden:
m_CursorStack.erase(--(i.base()));
In C 11 und höher stehen zwei zusätzliche Optionen zum Löschen von Elementen mit umgekehrten Iteratoren zur Verfügung:
1. Unveränderter Reverse Iterator
m_CursorStack.erase(std::next(i).base());
2. Advanced Reverse Iterator
std::advance(i, 1); m_CursorStack.erase(i.base());
Diese Alternativen bieten klarere und prägnantere Lösungen im Vergleich zum ursprünglichen Ansatz.
Das obige ist der detaillierte Inhalt vonWie lösche ich Elemente aus einer Liste mithilfe von Reverse-Iteratoren in C?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!