Massiivi kasutatakse mitme andmete salvestamiseks ja massiivi elementide arvu ei saa käitamisajal muuta. Selle probleemi saab lahendada dünaamilise massiivina töötava vektori abil. Vektoriklassis on elemendi lisamiseks ja vektorist eemaldamiseks erinevad funktsioonid. Funktsiooni erase() kasutatakse ühe või mitme elemendi eemaldamiseks vektorist käitamise ajal, mis vähendab vektori suurust. Selle funktsiooni kasutamist on selles õpetuses selgitatud.
Süntaks:
Allpool on toodud selle funktsiooni kahte tüüpi süntaksit.
iteraatori kustutamine ( iteraatori asukoht ) ;
Ülaltoodud funktsiooni erase() kasutatakse üksiku elemendi eemaldamiseks vektorist ja see tagastab iteraatori ning osutab elemendile, millele järgneb viimati kustutatud element.
iteraatori kustutamine ( iteraatori alguspositsioon, iteraatori lõpu_positsioon ) ;
Ülaltoodud funktsiooni erase() kasutatakse vektorist mitme elemendi eemaldamiseks selle funktsiooni esimeses ja teises argumendis mainitud positsiooni alusel.
Eeltingimus:
Enne selle õpetuse näidete kontrollimist peate kontrollima, kas g++ kompilaator on süsteemi installitud või mitte. Kui kasutate Visual Studio koodi, installige käivitatava koodi loomiseks C++ lähtekoodi kompileerimiseks vajalikud laiendused. Siin on C++ koodi kompileerimiseks ja täitmiseks kasutatud Visual Studio Code rakendust. Allpool on näidatud funktsiooni erase() erinevad kasutusviisid elemendi(te) sisestamiseks vektorisse.
Näide-1: eemaldage esimene element
Elemendi eemaldamiseks vektori algusest looge järgmise koodiga C++-fail. Koodis on kasutatud stringiväärtuste vektorit. Vektori väärtused on trükitud enne ja pärast esimese elemendi kustutamist vektorist, kasutades funktsiooni erase() ühe parameetriga.
//Kaasake vajalikud teegid#include
#include
kasutades nimeruum std ;
//vektori väärtuste kuvamine
tühine kuva_vektor ( vektor < string > puuviljad )
{
//Initsialiseeri loendur
int loendur = 1 ;
//Itereerige ja printige vektori elemendid tsükli abil
jaoks ( auto ta = puuviljad. alustada ( ) ; ta ! = puuviljad. lõpp ( ) ; ta ++ )
{
//Kontrollige, kas elemendid on viimane element või mitte
kui ( loendur ! = puuviljad. suurus ( ) )
cout << * ta << ', ' ;
muidu
cout << * ta ;
//Suurendage loendurit 1 võrra
loendur ++ ;
}
cout << endl ;
}
int peamine ( tühine ) {
//Deklareerib stringiandmete vektori
vektor < string > puuviljad = { 'oranž' , 'banaan' , 'Mango' , 'Jack Fruit' , litši } ;
//Prindib vektori olemasolevad väärtused
cout << 'Vektori väärtused enne eemaldamist: ' << endl ;
kuva_vektor ( puuviljad ) ;
//Eemalda vektorist esimene element
puuviljad. kustutada ( puuviljad. alustada ( ) ) ;
//Prindib pärast eemaldamist vektori olemasolevad väärtused
cout << ' \n Vektori väärtused pärast eemaldamist: ' << endl ;
kuva_vektor ( puuviljad ) ;
tagasi 0 ;
}
Väljund:
Pärast ülaltoodud koodi täitmist ilmub järgmine väljund.
Näide-2: eemaldage mitu elementi
Looge C++-fail järgmise koodiga, et eemaldada vektorist mitu elementi funktsiooni erase() abil. Koodis on kasutatud täisarvuliste väärtuste vektorit. Vektorist eemaldatud elementide vahemiku määramiseks on siin kasutatud kahte iteraatorit. Funktsiooni erase() on kasutatud kahe parameetriga, et eemaldada vektorist mitu elementi.
//Kaasake vajalikud teegid#include
#include
kasutades nimeruum std ;
//Vektori kuvamine
tühine kuva_vektor ( vektor < int > numbrid )
{
//Trüki vektori väärtused tsükli abil
jaoks ( auto ta = numbrid. alustada ( ) ; ta ! = numbrid. lõpp ( ) ; ta ++ )
cout << * ta << ' ' ;
//Lisa uus rida
cout << ' \n ' ;
}
int peamine ( ) {
//Deklareerib täisarvuliste andmete vektori
vektor < int > intArray { 678 , 435 , 960 , 231 , 800 , 387 , 634 , 267 , 409 , 294 } ;
//Prindib vektori olemasolevad väärtused
cout << 'Vektori väärtused enne eemaldamist: ' << endl ;
kuva_vektor ( intArray ) ;
//Elementide vahemiku vektorist eemaldamiseks deklareerige kaks iteraatorit
vektor < int > :: iteraator startEle, endEle ;
//Seadke iteraator esimesse asendisse
alustada neid = intArray. alustada ( ) ;
//Kasvatage alustavat iteraatorit 2 võrra
ettemaks ( alustada neid, 2 ) ;
//Seadista iteraator viimasele positsioonile
endEle = intArray. lõpp ( ) ;
// Vähendage lõpu iteraatorit 3 võrra
ettemaks ( endEle, - 3 ) ;
//Eemalda elementide vahemik
intArray. kustutada ( startEle, endEle ) ;
//Prindib pärast eemaldamist vektori olemasolevad väärtused
cout << ' \n Vektori väärtused pärast eemaldamist: ' << endl ;
kuva_vektor ( intArray ) ;
tagasi 0 ;
}
Väljund:
Pärast ülaltoodud koodi täitmist ilmub järgmine väljund. Vastavalt iteraatorite vahemikule on eemaldatud elemendid vektori 3. positsioonist 7. positsioonini.
Näide-3: eemaldage konkreetsed elemendid
Looge C++-fail järgmise koodiga, et eemaldada vektori konkreetsed elemendid funktsiooni erase() abil. Koodis on deklareeritud 7 täisarvu elemendist koosnev vektor. Järgmiseks on for-silmus kasutatud vektori elementide itereerimiseks ja nende elementide eemaldamiseks vektorist, mis ei jagu 5-ga.
//Kaasake vajalikud teegid#include
#include
kasutades nimeruum std ;
int peamine ( )
{
//Deklareerib täisarvuliste andmete vektori
vektor < int > numbrid = { 78 , Neli, viis , 67 , 25 , 98 , 75 , 52 } ;
cout << 'Vektori väärtused enne eemaldamist: \n ' ;
jaoks ( int konst & i : numbrid ) {
cout << i << '' ;
}
cout << endl ;
//Eemaldage vektorist arvud, mis ei jagu 5-ga
jaoks ( auto ta = numbrid. alustada ( ) ; ta ! = numbrid. lõpp ( ) ; ta ++ )
{
//Kontrollige, kas arv jagub 5-ga või mitte
kui ( * ta % 5 ! = 0 )
{
//Eemaldage element iteraatori põhjal
numbrid. kustutada ( ta -- ) ;
}
}
cout << 'Vektori väärtused pärast eemaldamist: \n ' ;
jaoks ( int konst & i : numbrid ) {
cout << i << '' ;
}
cout << endl ;
tagasi 0 ;
}
Väljund:
Pärast ülaltoodud koodi täitmist ilmub järgmine väljund. Väljund näitab, et vektor sisaldab ainult 5-ga jaguvaid elemente ja teised elemendid on eemaldatud.
Järeldus:
Selles õpetuses on näidatud erinevaid erase() funktsiooni kasutusviise vektorelementide eemaldamiseks. C++-l on elemendi vektorist eemaldamiseks palju muid funktsioone ja need funktsioonid võivad eemaldada üksiku elemendi korraga. Kuid nii üksikuid kui ka mitut elementi saab vektori mis tahes positsioonist eemaldada, kasutades vektori erase() funktsiooni.