Heim > Backend-Entwicklung > C++ > Wie entferne ich Elemente während der Iteration sicher aus einer C-Map?

Wie entferne ich Elemente während der Iteration sicher aus einer C-Map?

Mary-Kate Olsen
Freigeben: 2024-12-11 00:38:09
Original
476 Leute haben es durchsucht

How to Safely Remove Items from a C   Map During Iteration?

Elemente aus einer Karte während der Iteration in C entfernen

Wenn Sie eine Karte durchlaufen und versuchen, Elemente basierend auf bestimmten Bedingungen zu entfernen, ist dies der Fall Es ist wichtig, die Auswirkungen des Löschens von Elementen auf den Iterator zu berücksichtigen. Durch das Löschen eines Elements während der Iteration über die Karte wird der Iterator ungültig, was die Fortsetzung des Iterationsprozesses erschwert.

Standard-Löschsprache für assoziative Container

Die Standardsprache für Das Löschen aus einem assoziativen Container (z. B. einer Karte) während der Iteration erfolgt wie folgt folgt:

for (auto it = m.cbegin(); it != m.cend() /* not hoisted */; /* no increment */)
{
  if (must_delete)
  {
    m.erase(it++);    // or "it = m.erase(it)" since C++11
  }
  else
  {
    ++it;
  }
}
Nach dem Login kopieren

Erklärung

  • Aufheben der Schleifenbedingung: Dadurch wird sichergestellt, dass die Schleife nach dem Ende der Karte sucht jedes Mal durch.
  • Der Iterator wird im Entfernungsfall nicht erhöht: Wenn ein Element entfernt wird, zeigt der Iterator auf das nächste Element in der Karte. Dies bedeutet, dass die Schleife den Iterator nach dem Löschen nicht erhöhen sollte.
  • Const-Iteratoren: In der Zeit vor C 11 konnten Const-Iteratoren nicht gelöscht werden. In diesem Fall sollte ein herkömmlicher Iterator (z. B. std::map::iterator) verwendet werden.

Wenn Sie dieser Redewendung folgen, können Sie Elemente währenddessen sicher aus der Karte entfernen Iterieren, ohne die Iteratoren ungültig zu machen.

Das obige ist der detaillierte Inhalt vonWie entferne ich Elemente während der Iteration sicher aus einer C-Map?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage