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. Wektory wymagają użycia iteratora z metodą .erase(). Możesz połączyć std::find() z .erase(), aby usuwać elementy według wartości.
Oto, jak usunąć element z wektora. std::find() pochodzi z nagłówka <algorithm>, więc dołącz go razem z <vector>:
#include <algorithm>
#include <vector>
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 znajdujący się na pozycji iteratora
}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 zarządzaniu dynamicznymi kolekcjami, z których trzeba usuwać konkretne elementy na podstawie danych wprowadzonych przez użytkownika lub logiki programu. Pamiętaj, aby zawsze sprawdzać, czy iterator jest prawidłowy, zanim usuniesz element.
Wyzwanie
ŁatwyUtwórz program demonstrujący usuwanie elementów z std::vector za pomocą metody .erase() połączonej z std::find(). To wyzwanie sprawdzi, czy rozumiesz, jak bezpiecznie usuwać określone elementy z wektora i obserwować wyniki.
Podane zostaną następujące dane wejściowe:
- Liczba całkowita
nokreślają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
mokreślająca liczbę elementów do usunięcia - Następnie
mliczb całkowitych określających elementy do usunięcia z wektora
Twój 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 następującego dokładnego 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 na końcu:
Remaining elements: [element1] [element2] [element3] ...Pamiętaj, że .erase() wymaga iteratora, dlatego najpierw musisz użyć 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 poniżej swój kod
// 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