Funkcja Vector Erase() w C++

Vector Erase Function C



Tablica służy do przechowywania wielu danych, a liczby elementów tablicy nie można zmienić w czasie wykonywania. Ten problem można rozwiązać za pomocą wektora, który działa jak tablica dynamiczna. W klasie wektorowej istnieją różne funkcje do dodawania i usuwania elementu z wektora. Funkcja erase() służy do usuwania jednego lub więcej 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, iterator pozycja_końcowa);

Powyższa funkcja erase() służy do usuwania wielu elementów z wektora na podstawie pozycji wymienionej w pierwszym i drugim argumencie tej funkcji.



Warunek wstępny:

Przed sprawdzeniem przykładów z tego samouczka musisz sprawdzić, czy kompilator g++ jest zainstalowany w systemie. Jeśli używasz Visual Studio Code, zainstaluj niezbędne rozszerzenia, aby skompilować kod źródłowy C++ w celu utworzenia kodu wykonywalnego. Tutaj aplikacja Visual Studio Code została użyta do kompilacji i wykonania kodu C++. 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 użyto wektora wartości łańcuchowych. Wartości wektora zostały wydrukowane przed i po usunięciu pierwszego elementu z wektora za pomocą funkcji erase() z jednym parametrem.

//Dołącz niezbędne biblioteki

#włączać

#włączać

za pomocą przestrzeń nazwgodziny;

//Wyświetl wartości wektora

próżniawektor_wyświetlany(wektor<strunowy>owoce)

{

//Zainicjuj licznik

intlicznik= 1;

//Iteruj i drukuj elementy wektora za pomocą pętli

dla (automatycznyon=owoce.rozpocząć();on!=owoce.kończyć się();on++)

{

//Sprawdź, czy elementy są ostatnim elementem, czy nie

Jeśli(licznik!=owoce.rozmiar())

koszt << *on<< ',';

w przeciwnym razie

koszt << *on;

//Zwiększ licznik o 1

licznik++;

}

koszt <<koniec;

}

intGłówny(próżnia) {

//Zadeklaruj wektor danych łańcuchowych

wektor<strunowy>owoce= { 'Pomarańczowy','Banan','Mango','Chlebowiec różnolistny',„Liczi” };

//Wydrukuj istniejące wartości wektora

koszt << 'Wartości wektora przed usunięciem: ' <<koniec;

wektor_wyświetlany(owoce);

//Usuń pierwszy element z wektora

owoce.usuwać(owoce.rozpocząć());

//Wydrukuj istniejące wartości wektora po usunięciu

koszt << ' Wartości wektora po usunięciu: ' <<koniec;

wektor_wyświetlany(owoce);

powrót 0;

}

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego kodu.



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. Użyto tutaj dwóch iteratorów do ustawienia zakresu elementów usuniętych z wektora. Funkcja erase() została użyta z dwoma parametrami do usunięcia wielu elementów z wektora.

//Dołącz niezbędne biblioteki

#włączać

#włączać

za pomocą przestrzeń nazwgodziny;

//Wyświetl wektor

próżniawektor_wyświetlany(wektor<int>liczba)

{

//Wydrukuj wartości wektora za pomocą pętli

dla(automatycznyon=licz.rozpocząć();on!=licz.kończyć się() ;on++)

koszt << *on<< '';

//Dodaj nową linię

koszt << ' ';

}

intGłówny() {

//Zadeklaruj wektor danych całkowitych

wektor<int>intArray{ 678,435,960,231,800,387,634,267,409,294};

//Wydrukuj istniejące wartości wektora

koszt << 'Wartości wektora przed usunięciem: ' <<koniec;

wektor_wyświetlany(intArray);

//Zadeklaruj dwa iteratory, aby usunąć zakres elementów z wektora

wektor<int> :: iteratorstartEle, endEle;

//Ustaw iterator na pierwszą pozycję

startEle=inArray.rozpocząć();

//Zwiększ początkowy iterator o 2

osiągnięcie(startEle,2);

//Ustaw iterator na ostatnią pozycję

endEle=inArray.kończyć się();

//Zmniejsz końcowy iterator o 3

osiągnięcie(koniecEle,-3);

//Usuń zakres elementów

inArray.usuwać(startEle, endEle);

//Wydrukuj istniejące wartości wektora po usunięciu

koszt << ' Wartości wektora po usunięciu: ' <<koniec;

wektor_wyświetlany(intArray);

powrót 0;

}

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego kodu. Zgodnie z zakresem iteratorów, elementy od 3 do 7 pozycji wektora zostały usunięte.

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 został zadeklarowany wektor składający się z 7 elementów całkowitych. Następnie pętla „for” wykorzystała 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

#włączać

#włączać

za pomocą przestrzeń nazwgodziny;

intGłówny()

{

//Zadeklaruj wektor danych całkowitych

wektor<int>liczby= { 78,Cztery pięć,67,25,98,75,52 };

koszt << „Wartości wektora przed usunięciem: ';

dla (int stały &i:liczby) {

koszt <<i<< '';

}

koszt <<koniec;

//Usuń z wektora liczby niepodzielne przez 5

dla (automatycznyon=liczby.rozpocząć();on!=liczby.kończyć się();on++)

{

//Sprawdź, czy liczba jest podzielna przez 5, czy nie

Jeśli (*on% 5 != 0)

{

//Usuń element na podstawie iteratora

liczby.usuwać(on-);

}

}

koszt << „Wartości wektora po usunięciu: ';

dla (int stały &i:liczby) {

koszt <<i<< '';


}


koszt <<koniec;


powrót 0;

}

Wyjście:

Poniższe dane wyjściowe pojawią się po wykonaniu powyższego kodu. Dane wyjściowe pokazują, że wektor zawiera elementy podzielne tylko 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 pojedynczy, jak i wiele elementów z dowolnej pozycji wektora można usunąć za pomocą funkcji vector erase().