Elemente entfernen
Teil des Abschnitts Logik & Ablauf der C++-Journey von Coddy. Lektion 16 von 56.
Manchmal müssen Sie Elemente aus einem Vektor entfernen, wenn sie nicht mehr benötigt werden. Vektoren erfordern die Verwendung eines Iterators mit der Methode .erase(). Sie können std::find() mit .erase() kombinieren, um Elemente nach Wert zu entfernen.
So entfernst du ein Element aus einem Vektor:
std::vector<int> numbers = {10, 20, 30, 40};
auto it = std::find(numbers.begin(), numbers.end(), 20);
if (it != numbers.end()) {
numbers.erase(it); // Entfernt das Element an der Iterator-Position
}Nach dem Aufruf von erase() wird das Element an dieser Position entfernt und alle nachfolgenden Elemente rücken nach. Wenn Sie versuchen, ein Element zu finden und zu löschen, das nicht existiert, gibt find() den Wert end() zurück, und die Überprüfung darauf verhindert Fehler.
Dieses Muster macht das Entfernen von Elementen sicher und vorhersehbar. Es ist besonders nützlich für die Verwaltung dynamischer Sammlungen, wenn du bestimmte Elemente anhand von Benutzereingaben oder der Programmlogik entfernen musst. Denke daran, vor dem Löschen immer zu prüfen, ob der Iterator gültig ist.
Aufgabe
EinfachErstelle ein Programm, das das Entfernen von Elementen aus einem std::vector mithilfe der .erase()-Methode in Kombination mit std::find() demonstriert. Diese Aufgabe testet dein Verständnis dafür, wie bestimmte Elemente sicher aus einem Vektor entfernt werden und wie du die Ergebnisse beobachtest.
Die folgenden Eingaben werden bereitgestellt:
- Eine Ganzzahl
n, die die Anzahl der Elemente angibt, die zunächst zum Vektor hinzugefügt werden sollen - Anschließend
nGanzzahlen, die in den Vektor eingefügt werden - Eine Ganzzahl
m, die die Anzahl der zu entfernenden Elemente angibt - Anschließend
mGanzzahlen, die die aus dem Vektor zu entfernenden Elemente darstellen
Dein Programm sollte:
- Einen leeren
std::vector<int>erstellen - Die Anzahl der hinzuzufügenden Elemente einlesen und sie mithilfe von
.push_back()in den Vektor einfügen - Die anfängliche Vektorgröße nach allen Einfügungen ausgeben
- Die Anzahl der zu entfernenden Elemente einlesen
- Für jedes zu entfernende Element
std::find()verwenden, um es zu finden, und es anschließend mit.erase()entfernen, falls es gefunden wurde - Nach jedem Entfernungsversuch die aktuelle Größe des Vektors ausgeben
- Zum Schluss die verbleibenden Elemente im Vektor durchlaufen und sie in ihrer Reihenfolge ausgeben
Verwende das folgende exakte Ausgabeformat:
Anfängliche Vektorgröße:
Initial size: [size]Nach jedem Entfernungsversuch:
After removing [number]: size = [current_size]Verbleibende Elemente:
Remaining elements: [element1] [element2] [element3] ...Denke daran, dass .erase() einen Iterator benötigt. Daher musst du zuerst std::find() verwenden, um das Element zu finden. Überprüfe immer, ob das Element gefunden wurde, bevor du es entfernst. Verwende eine bereichsbasierte for-Schleife, um die verbleibenden Elemente in ihrer aktuellen Reihenfolge auszugeben.
Probier es selbst
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// Anzahl der hinzuzufügenden Elemente lesen
int n;
cin >> n;
// Einen leeren Vektor erstellen
vector<int> myVector;
// n Elemente lesen und einfügen
for (int i = 0; i < n; i++) {
int element;
cin >> element;
// Element in den Vektor einfügen
}
// Anzahl der zu entfernenden Elemente lesen
int m;
cin >> m;
// TODO: Schreiben Sie Ihren Code unten
// 1. Anfängliche Vektorgröße ausgeben
// 2. Für jedes zu entfernende Element, dieses finden, .erase() verwenden und die Größe nach jeder Entfernung ausgeben
// 3. Verbleibende Elemente im Vektor ausgeben
return 0;
}Diese Lektion enthält ein kurzes Quiz. Starte die Lektion, um es zu beantworten und deinen Fortschritt zu speichern.
Alle Lektionen in Logik & Ablauf
1Pointer und Speicher
Was ist ein Pointer?AdressoperatorDereferenzierungsoperatorNull-PointerPointer und ArraysDynamischer Speicher mit 'new'Speicher freigeben mit 'delete'Zusammenfassung – Pointer-Übung2Vektoren (Dynamische Arrays)
Einführung in std::vectorEinen Vector erstellenElemente hinzufügenAuf Elemente zugreifenVector-GrößeIterieren mit einer For-SchleifeRange-based For-SchleifeElemente entfernenZusammenfassung – Vector-Operationen3Projekt: Aufgabenlisten-Tool
ProjektübersichtEine Aufgabe hinzufügenÜbe selbstständig: Online-C++-Compiler