Pole se používá k ukládání více dat a počet prvků pole nelze za běhu změnit. Tento problém lze vyřešit použitím vektoru, který funguje jako dynamické pole. Ve třídě vektor existují různé funkce pro přidání a odebrání prvku z vektoru. Funkce erase () se používá k odebrání jednoho nebo více prvků z vektoru za běhu, což zmenšuje velikost vektoru. Použití této funkce bylo vysvětleno v tomto kurzu.
Syntax:
Níže jsou uvedeny dva typy syntaxe této funkce.
vymazání iterátoru(poloha iterátoru);
Výše uvedená funkce erase () se používá k odebrání jednoho prvku z vektoru a vrací iterátor a ukazuje na prvek, za kterým následuje poslední vymazaný prvek.
vymazání iterátoru(iterátor počáteční_pozice, iterátor koncová_pozice);
Výše uvedená funkce erase () se používá k odstranění více prvků z vektoru na základě polohy uvedené v prvním a druhém argumentu této funkce.
Předpoklad:
Před kontrolou příkladů tohoto kurzu musíte zkontrolovat, zda je kompilátor g ++ nainstalován nebo není v systému. Pokud používáte kód Visual Studio, nainstalujte potřebná rozšíření ke kompilaci zdrojového kódu C ++ a vytvořte spustitelný kód. Zde byla aplikace Visual Studio Code použita ke kompilaci a spuštění kódu C ++. Níže jsou ukázána různá použití funkce erase () pro vložení prvků do vektoru.
Příklad-1: Odeberte první prvek prvku
Vytvořením souboru C ++ s následujícím kódem odeberete prvek ze začátku vektoru. V kódu byl použit vektor řetězcových hodnot. Hodnoty vektoru byly vytištěny před a po odstranění prvního prvku z vektoru pomocí funkce erase () s jedním parametrem.
// Zahrňte potřebné knihovny#zahrnout
#zahrnout
použitím jmenný prostorhodiny;
// Zobrazení hodnot vektoru
prázdnédisplay_vector(vektor<tětiva>ovoce)
{
// Inicializujte počítadlo
intčelit= 1;
// Opakujte a vytiskněte prvky vektoru pomocí smyčky
pro (autoon=ovoce.začít();on!=ovoce.konec();on++)
{
// Zkontrolujte, zda jsou prvky posledním prvkem nebo ne
-li(čelit!=ovoce.velikost())
náklady << *on<< ',';
jiný
náklady << *on;
// Zvýšení počitadla o 1
čelit++;
}
náklady <<endl;
}
inthlavní(prázdné) {
// Deklarace vektoru řetězcových dat
vektor<tětiva>ovoce= { 'Oranžový','Banán','Mango','Jack Fruit','Lichi' };
// Vytiskne existující hodnoty vektoru
náklady << 'Hodnoty vektoru před odstraněním:' <<endl;
display_vector(ovoce);
// Odebere první prvek z vektoru
ovoce.vymazat(ovoce.začít());
// Vytiskněte stávající hodnoty vektoru po odebrání
náklady << ' nHodnoty vektoru po odebrání: ' <<endl;
display_vector(ovoce);
vrátit se 0;
}
Výstup:
Po spuštění výše uvedeného kódu se zobrazí následující výstup.
Příklad 2: Odebrání více prvků
Vytvořte soubor C ++ s následujícím kódem a odeberte více prvků z vektoru pomocí funkce erase (). V kódu byl použit vektor celočíselných hodnot. Zde byly použity dva iterátory k nastavení rozsahu prvků odstraněných z vektoru. K odstranění více prvků z vektoru byla použita funkce erase () se dvěma parametry.
// Zahrňte potřebné knihovny#zahrnout
#zahrnout
použitím jmenný prostorhodiny;
// Zobrazení vektoru
prázdnédisplay_vector(vektor<int>č)
{
// Vytiskněte hodnoty vektoru pomocí smyčky
pro(autoon=č.začít();on!=č.konec() ;on++)
náklady << *on<< '';
// Přidat nový řádek
náklady << ' n';
}
inthlavní() {
// Deklarace vektoru celočíselných dat
vektor<int>intArray{ 678,435,960,231,800,387,634,267,409,294};
// Vytiskne existující hodnoty vektoru
náklady << 'Hodnoty vektoru před odstraněním:' <<endl;
display_vector(intArray);
// Deklarováním dvou iterátorů odstraníte rozsah prvků z vektoru
vektor<int> :: iterátorstartEle, endEle;
// Nastavte iterátor na první pozici
startEle=intArray.začít();
// Zvýšení počátečního iterátoru o 2
záloha(startEle,2);
// Nastaví iterátor na poslední pozici
endEle=intArray.konec();
// Snižte koncový iterátor o 3
záloha(endEle,-3);
// Odebrat rozsah prvků
intArray.vymazat(startEle, endEle);
// Vytiskněte stávající hodnoty vektoru po odebrání
náklady << ' nHodnoty vektoru po odebrání: ' <<endl;
display_vector(intArray);
vrátit se 0;
}
Výstup:
Po spuštění výše uvedeného kódu se zobrazí následující výstup. Podle rozsahu iterátorů byly odstraněny prvky z 3. polohy do 7. pozice vektoru.
Příklad 3: Odeberte konkrétní prvky
Vytvořte soubor C ++ s následujícím kódem a odeberte konkrétní prvky vektoru pomocí funkce erase (). V kódu byl deklarován vektor 7 celočíselných prvků. Dále smyčka „for“ použila k iteraci vektorových prvků a odstranění těch prvků z vektoru, které nejsou dělitelné 5.
// Zahrňte potřebné knihovny#zahrnout
#zahrnout
použitím jmenný prostorhodiny;
inthlavní()
{
// Deklarace vektoru celočíselných dat
vektor<int>čísla= { 78,Čtyři pět,67,25,98,75,52 };
náklady << 'Hodnoty vektoru před odstraněním: n';
pro (int konst &já:čísla) {
náklady <<já<< '';
}
náklady <<endl;
// Odstraňte z vektoru čísla, která nejsou dělitelná 5
pro (autoon=čísla.začít();on!=čísla.konec();on++)
{
// Zkontrolujte, zda je číslo dělitelné 5 nebo ne
-li (*on% 5 != 0)
{
// Odstraní prvek na základě iterátoru
čísla.vymazat(on-);
}
}
náklady << 'Hodnoty vektoru po odebrání: n';
pro (int konst &já:čísla) {
náklady <<já<< '';
}
náklady <<endl;
vrátit se 0;
}
Výstup:
Po spuštění výše uvedeného kódu se zobrazí následující výstup. Výstup ukazuje, že vektor obsahuje dělitelné prvky pouze 5 a další prvky byly odstraněny.
Závěr:
V tomto kurzu byly ukázány různé způsoby použití funkce erase () k odstranění vektorových prvků. C ++ má mnoho dalších funkcí k odebrání prvku z vektoru a tyto funkce mohou odebrat jeden prvek najednou. Ale jeden i více prvků z jakékoli polohy vektoru lze odebrat pomocí funkce vector erase ().