Tablica służy do przechowywania wielu danych, a liczby elementów tablicy nie można zmienić w czasie wykonywania. Problem ten można rozwiązać za pomocą wektora działającego jak tablica dynamiczna. W klasie wektorów istnieją różne funkcje służące do dodawania i usuwania elementów z wektora. Funkcja erase() służy do usuwania jednego lub większej liczby elementów z wektora w czasie wykonywania, co zmniejsza rozmiar wektora. Zastosowania tej funkcji zostały wyjaśnione w tym samouczku.
Składnia:
Poniżej podano dwa rodzaje składni tej funkcji.
kasowanie iteratora ( pozycja iteratora ) ;
Powyższa funkcja erase() służy do usunięcia pojedynczego elementu z wektora, zwraca iterator i wskazuje element, po którym następuje ostatni usunięty element.
kasowanie iteratora ( iterator pozycja_początkowa, pozycja_końcowa iteratora ) ;
Powyższa funkcja erase() służy do usuwania wielu elementów z wektora w oparciu o pozycję wymienioną w pierwszym i drugim argumencie tej funkcji.
Warunek wstępny:
Przed sprawdzeniem przykładów w tym samouczku musisz sprawdzić, czy w systemie jest zainstalowany kompilator g++. Jeśli używasz Visual Studio Code, zainstaluj niezbędne rozszerzenia, aby skompilować kod źródłowy C++ w celu utworzenia kodu wykonywalnego. W tym przypadku do skompilowania i wykonania kodu C++ użyto aplikacji Visual Studio Code. Poniżej pokazano różne zastosowania funkcji erase() do wstawiania elementów do wektora.
Przykład-1: Usuń pierwszy element elementu
Utwórz plik C++ z następującym kodem, aby usunąć element z początku wektora. W kodzie wykorzystano wektor wartości łańcuchowych. Wartości wektora zostały wydrukowane przed i po usunięciu pierwszego elementu wektora za pomocą funkcji Erase() z jednym parametrem.
//Dołącz niezbędne biblioteki#include
#uwzględnij
za pomocą przestrzeń nazw st ;
//Wyświetl wartości wektora
próżnia wektor_wyświetlania ( wektor < strunowy > owoce )
{
//Zainicjuj licznik
wew lada = 1 ;
//Iteruj i drukuj elementy wektora za pomocą pętli
Do ( automatyczny On = owoce. zaczynać ( ) ; On ! = owoce. koniec ( ) ; On ++ )
{
//Sprawdź, czy elementy są ostatnim elementem, czy nie
Jeśli ( lada ! = owoce. rozmiar ( ) )
cout << * On << „”, „ ;
w przeciwnym razie
cout << * On ;
//Zwiększ licznik o 1
lada ++ ;
}
cout << koniec ;
}
wew główny ( próżnia ) {
//Zadeklaruj wektor danych w postaci ciągu znaków
wektor < strunowy > owoce = { 'Pomarańczowy' , 'Banan' , 'Mango' , 'Chlebowiec różnolistny' , liczi } ;
//Wydrukuj istniejące wartości wektora
cout << „Wartości wektora przed usunięciem: „ << koniec ;
wektor_wyświetlania ( owoce ) ;
//Usuń pierwszy element z wektora
owoce. usuwać ( owoce. zaczynać ( ) ) ;
//Wydrukuj istniejące wartości wektora po usunięciu
cout << ' \N Wartości wektora po usunięciu: ' << koniec ;
wektor_wyświetlania ( owoce ) ;
powrót 0 ;
}
Wyjście:
Po wykonaniu powyższego kodu pojawią się następujące dane wyjściowe.
Przykład-2: Usuń wiele elementów
Utwórz plik C++ z następującym kodem, aby usunąć wiele elementów z wektora za pomocą funkcji erase(). W kodzie zastosowano wektor wartości całkowitych. Zastosowano tu dwa iteratory w celu ustalenia zakresu elementów usuwanych z wektora. Zastosowano funkcję kasowania() z dwoma parametrami w celu usunięcia wielu elementów z wektora.
//Dołącz niezbędne biblioteki#uwzględnij
#include
za pomocą przestrzeń nazw st ;
//Wyświetl wektor
próżnia wektor_wyświetlania ( wektor < wew > liczby )
{
//Wydrukuj wartości wektora za pomocą pętli
Do ( automatyczny On = liczby. zaczynać ( ) ; On ! = liczby. koniec ( ) ; On ++ )
cout << * On << ' ' ;
//Dodaj nową linię
cout << ' \N ' ;
}
wew główny ( ) {
//Zadeklaruj wektor danych całkowitych
wektor < wew > intArray { 678 , 435 , 960 , 231 , 800 , 387 , 634 , 267 , 409 , 294 } ;
//Wydrukuj istniejące wartości wektora
cout << „Wartości wektora przed usunięciem: „ << koniec ;
wektor_wyświetlania ( intArray ) ;
//Zadeklaruj dwa iteratory, aby usunąć zakres elementów z wektora
wektor < wew > :: iterator startEle, koniecEle ;
//Ustaw iterator na pierwszą pozycję
rozpocznij je = intArray. zaczynać ( ) ;
//Zwiększ początkowy iterator o 2
osiągnięcie ( zacznij je, 2 ) ;
//Ustaw iterator na ostatnią pozycję
koniecEle = intArray. koniec ( ) ;
//Zmniejsz iterator końcowy o 3
osiągnięcie ( koniecEle, - 3 ) ;
//Usuń zakres elementów
intArray. usuwać ( startEle, koniecEle ) ;
//Wydrukuj istniejące wartości wektora po usunięciu
cout << ' \N Wartości wektora po usunięciu: ' << koniec ;
wektor_wyświetlania ( intArray ) ;
powrót 0 ;
}
Wyjście:
Po wykonaniu powyższego kodu pojawią się następujące dane wyjściowe. Zgodnie z zakresem iteratorów usunięto elementy od 3. do 7. pozycji wektora.
Przykład 3: Usuń określone elementy
Utwórz plik C++ z następującym kodem, aby usunąć określone elementy wektora za pomocą funkcji erase(). W kodzie zadeklarowano wektor składający się z 7 elementów całkowitych. Następnie pętla „for” została użyta do iteracji elementów wektora i usunięcia z wektora tych elementów, które nie są podzielne przez 5.
//Dołącz niezbędne biblioteki#include
#uwzględnij
za pomocą przestrzeń nazw st ;
wew główny ( )
{
//Zadeklaruj wektor danych całkowitych
wektor < wew > liczby = { 78 , Cztery pięć , 67 , 25 , 98 , 75 , 52 } ;
cout << „Wartości wektora przed usunięciem: \N ' ;
Do ( wew konst & I : liczby ) {
cout << I << '' ;
}
cout << koniec ;
//Usuń z wektora liczby, które nie są podzielne przez 5
Do ( automatyczny On = liczby. zaczynać ( ) ; On ! = liczby. koniec ( ) ; On ++ )
{
//Sprawdź, czy liczba jest podzielna przez 5, czy nie
Jeśli ( * On % 5 ! = 0 )
{
//Usuń element oparty na iteratorze
liczby. usuwać ( On -- ) ;
}
}
cout << „Wartości wektora po usunięciu: \N ' ;
Do ( wew konst & I : liczby ) {
cout << I << '' ;
}
cout << koniec ;
powrót 0 ;
}
Wyjście:
Po wykonaniu powyższego kodu pojawią się następujące dane wyjściowe. Wynik pokazuje, że wektor zawiera tylko elementy podzielne przez 5, a inne elementy zostały usunięte.
Wniosek:
W tym samouczku pokazano różne zastosowania funkcji erase() do usuwania elementów wektorowych. C++ ma wiele innych funkcji do usuwania elementu z wektora, a te funkcje mogą usuwać pojedynczy element na raz. Ale zarówno pojedyncze, jak i wielokrotne elementy z dowolnej pozycji wektora można usunąć za pomocą funkcji kasowania wektorów ().