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!