Heim >Backend-Entwicklung >C++ >Wie lösche ich Elemente aus einer Liste mithilfe von Reverse-Iteratoren in C?

Wie lösche ich Elemente aus einer Liste mithilfe von Reverse-Iteratoren in C?

Barbara Streisand
Barbara StreisandOriginal
2024-11-30 06:16:10549Durchsuche

How to Erase Elements from a List Using Reverse Iterators 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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn