Usuwanie elementów
Część sekcji Logika i przepływ programu ścieżki C++ w Coddy. Lekcja 16 z 56.
Czasami trzeba usuwać elementy z wektora, gdy nie są już potrzebne. W przypadku wektorów do użycia metody .erase() potrzebny jest iterator. Możesz połączyć std::find() z .erase(), aby usuwać elementy według wartości.
Oto jak usunąć element z wektora:
std::vector<int> numbers = {10, 20, 30, 40};
auto it = std::find(numbers.begin(), numbers.end(), 20);
if (it != numbers.end()) {
numbers.erase(it); // Usuwa element wskazywany przez iterator
}Po wywołaniu erase() element na tej pozycji zostaje usunięty, a wszystkie kolejne elementy przesuwają się w dół. Jeśli spróbujesz znaleźć i usunąć element, który nie istnieje, find() zwróci end(), a sprawdzenie tego zapobiega błędom.
Ten wzorzec sprawia, że usuwanie elementów jest bezpieczne i przewidywalne. Jest szczególnie przydatny przy obsłudze dynamicznych kolekcji, z których trzeba usuwać określone elementy na podstawie danych wprowadzonych przez użytkownika lub logiki programu. Pamiętaj, aby przed usunięciem zawsze sprawdzić, czy iterator jest prawidłowy.
Wyzwanie
ŁatwyUtwórz program demonstrujący usuwanie elementów z std::vector za pomocą metody .erase() w połączeniu z std::find(). To wyzwanie sprawdzi Twoje zrozumienie tego, jak bezpiecznie usuwać określone elementy z wektora i obserwować wyniki.
Podane zostaną następujące dane wejściowe:
- Liczba całkowita
nreprezentująca liczbę elementów, które należy początkowo dodać do wektora - Następnie
nliczb całkowitych do wstawienia do wektora - Liczba całkowita
mreprezentująca liczbę elementów do usunięcia - Następnie
mliczb całkowitych reprezentujących elementy do usunięcia z wektora
Program powinien:
- Utworzyć pusty
std::vector<int> - Odczytać liczbę elementów do dodania i wstawić je do wektora za pomocą
.push_back() - Wyświetlić początkowy rozmiar wektora po wszystkich wstawieniach
- Odczytać liczbę elementów do usunięcia
- Dla każdego elementu do usunięcia użyć
std::find(), aby go znaleźć, a następnie użyć.erase(), aby go usunąć, jeśli został znaleziony - Po każdej próbie usunięcia wyświetlić bieżący rozmiar wektora
- Na koniec przejść przez pozostałe elementy wektora i wyświetlić je w kolejności
Użyj dokładnie następującego formatu wyjściowego:
Początkowy rozmiar wektora:
Initial size: [size]Po każdej próbie usunięcia:
After removing [number]: size = [current_size]Pozostałe elementy:
Remaining elements: [element1] [element2] [element3] ...Pamiętaj, że .erase() wymaga iteratora, więc najpierw użyj std::find(), aby znaleźć element. Zawsze sprawdzaj, czy element został znaleziony, zanim go usuniesz. Użyj pętli for opartej na zakresie, aby wyświetlić pozostałe elementy w ich bieżącej kolejności.
Spróbuj swoich sił
#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;
int main() {
// Wczytaj liczbę elementów do dodania
int n;
cin >> n;
// Utwórz pusty wektor
vector<int> myVector;
// Wczytaj i dodaj n elementów
for (int i = 0; i < n; i++) {
int element;
cin >> element;
// Dodaj element do wektora
}
// Wczytaj liczbę elementów do usunięcia
int m;
cin >> m;
// TODO: Napisz swój kod poniżej
// 1. Wypisz początkowy rozmiar wektora
// 2. Dla każdego elementu do usunięcia znajdź go, użyj .erase() i wypisz rozmiar po każdym usunięciu
// 3. Wypisz elementy pozostałe w wektorze
return 0;
}Ta lekcja zawiera krótki quiz. Zacznij lekcję, żeby na niego odpowiedzieć i śledzić swoje postępy.
Wszystkie lekcje w sekcji Logika i przepływ programu
1Wskaźniki i pamięć
Czym jest wskaźnik?Operator pobrania adresuOperator dereferencjiWskaźniki zeroweWskaźniki i tabliceDynamiczne zarządzanie pamięcią za pomocą „new”Zwalnianie pamięci za pomocą „delete”Podsumowanie — ćwiczenia ze wskaźnikami2Wektory (tablice dynamiczne)
Wprowadzenie do std::vectorTworzenie wektoraDodawanie elementówDostęp do elementówRozmiar wektoraIterowanie za pomocą pętli forPętla for oparta na zakresieUsuwanie elementówPodsumowanie — operacje na wektorach5Projekt: Narzędzie do zarządzania zapasami
Konfiguracja projektuDodawanie i aktualizowanie produktów3Projekt: narzędzie do listy zadań
Przegląd projektuDodawanie zadaniaPoćwicz samodzielnie: Kompilator C++ online