0Pricing
C++ Academy · Lektion

Vektoren ändern: insert, erase, clear

Fügen Sie Elemente ein, löschen und leeren Sie Vektoren und berücksichtigen Sie dabei die Regeln zur Ungültigkeit von Iteratoren.

Vektoren ändern: insert, erase, clear ist eine kostenlose C++ Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des C++ Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Am Ende einfügen

Das schnellste Einfügen: push_back oder emplace_back — beide fügen ein Element am Ende mit amortisiertem O(1) ein.

An einer beliebigen Position einfügen

insert(pos, value) verschiebt alles hinter pos nach rechts. Die Operation hat eine Komplexität von O(n).

std::vector<int> v = {1, 2, 4, 5};
v.insert(v.begin() + 2, 3);   // {1, 2, 3, 4, 5}

Einen Bereich einfügen

Fügen Sie alle Elemente eines anderen Containers auf einmal ein.

std::vector<int> v = {1, 5};
std::vector<int> mid = {2, 3, 4};
v.insert(v.begin() + 1, mid.begin(), mid.end());
// {1, 2, 3, 4, 5}

Mehrere Kopien einfügen

Fügen Sie n Kopien desselben Werts ein.

std::vector<int> v = {1, 4};
v.insert(v.begin() + 1, 2, 99);   // {1, 99, 99, 4}

Ein Element löschen

erase(pos) entfernt das Element an der Iteratorposition und verschiebt alles dahinter nach links. Gibt einen Iterator auf das nächste Element zurück.

std::vector<int> v = {1, 2, 3, 4};
v.erase(v.begin() + 1);   // {1, 3, 4}

Einen Bereich löschen

Entfernen Sie alle Elemente im halboffenen Bereich [first, last).

v.erase(v.begin() + 1, v.begin() + 3);

Das Erase-Remove-Idiom

Um alle Elemente zu entfernen, die einem Prädikat entsprechen, ohne Lücken zu hinterlassen, kombinieren Sie std::remove_if und erase.

#include <algorithm>
v.erase(
    std::remove_if(v.begin(), v.end(), [](int x) { return x < 0; }),
    v.end()
);

C++20 std::erase und std::erase_if

C++20 hat freie Funktionen hinzugefügt, die das Erase-Remove-Idiom kapseln.

std::erase(v, 0);                    // remove all 0s
std::erase_if(v, [](int x) { return x < 0; });

clear: Alle Elemente entfernen

clear() entfernt alle Elemente, behält aber die Kapazität bei. Das ist nützlich, wenn Sie den Vektor anschließend erneut füllen möchten.

pop_back: Das letzte Element entfernen

Entfernt das letzte Element in O(1). Es gibt keinen Rückgabewert — speichern Sie das Element vorher, wenn Sie es benötigen.

int last = v.back();
v.pop_back();

Regeln zur Iteratorinvalidierung

insert und erase machen jeden Iterator ab der geänderten Position ungültig. erase gibt den nächsten gültigen Iterator zurück, sodass Sie die Iteration fortsetzen können.

Kurzer Test

Was bewirkt std::remove_if allein bei einem Vektor?

Zusammenfassung

insert und erase funktionieren an beliebigen Positionen mit O(n). Verwenden Sie push_back/pop_back für O(1) am Ende. Wenden Sie das Erase-Remove-Idiom (oder std::erase_if aus C++20) an, um passende Elemente zu löschen.

Häufig gestellte Fragen

Ist die Lektion „Vektoren ändern: insert, erase, clear“ kostenlos?

Ja — der vollständige Text von „Vektoren ändern: insert, erase, clear“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des C++ Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der C++ Academy-Kurs umfasst insgesamt 4 Lektionen.

Was lerne ich in „Vektoren ändern: insert, erase, clear“?

Fügen Sie Elemente ein, löschen und leeren Sie Vektoren und berücksichtigen Sie dabei die Regeln zur Ungültigkeit von Iteratoren. Du übst C++ Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.

Brauche ich Erfahrung, um C++ Academy zu starten?

Keine Vorkenntnisse erforderlich. C++ Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.

Wie lange dauert die Lektion „Vektoren ändern: insert, erase, clear“?

Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.

Kann ich in dieser C++ Academy-Lektion Code schreiben und ausführen?

Ja. Jede C++ Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.

Alle Lektionen in diesem Kurs

  1. Grundlagen von std::vector: push_back, size, capacity
  2. Vektoren durchlaufen: Index, range-for, Iteratoren
  3. Vektoren ändern: insert, erase, clear
  4. Vector vs. std::array vs. C-Array
← Zurück zu C++ Academy