C++ Std::Map::Slett eksempler

C Std Map Slett Eksempler



Blant de mange operasjonene som er tilgjengelige for 'std::map', skiller 'slett'-funksjonen seg ut som et avgjørende verktøy for å fjerne elementene basert på nøklene deres. Et 'std::map' er en organisert assosiativ beholder som består av nøkkelverdi-par. Ordningen av elementer i et 'std::map' er konsekvent sortert i henhold til nøklene deres, noe som letter effektive operasjoner som søk, innsetting og sletting basert på nøkkelverdier.

Innenfor C++-området, fungerer 'std::map::erase'-funksjonen som en medlemsfunksjon i 'std::map'-klassen, og muliggjør eliminering av spesifikke elementer fra kartet. Den kommer i ulike former, og gir fleksibilitet når det gjelder å spesifisere hvilke elementer som skal slettes. I denne artikkelen vil vi dykke ned i detaljene i 'std::map::erase', og gir flere eksempler for å illustrere allsidigheten.







Eksempel 1: Sletting med nøkkel

Muligheten til å slette elementene med nøkkel i 'std::map' er en grunnleggende funksjon levert av C++ Standard Template Library. Denne operasjonen brukes ofte når du trenger å administrere og manipulere nøkkelverdi-parene i et program, og den gir en praktisk måte å fjerne de spesifikke elementene basert på nøklene deres. Vi vil lage et eksempel for å demonstrere hvordan du bruker 'std::map' for å lage et kart, slette et element med nøkkel og deretter vise det modifiserte kartet.



#include
#inkluder

int main ( ) {
std::kart < int, std::streng > mitt kart;
mitt kart [ 1 ] = 'Rød' ;
mitt kart [ 2 ] = 'Blå' ;
mitt kart [ 3 ] = 'Grønn' ;

mitt kart.slett ( 2 ) ;

til ( const auto & par: myMap ) {
std::cout << par.først << ': ' << par.sekund << std::endl;
}

komme tilbake 0 ;
}


I dette eksemplet begynner vi med å inkludere de nødvendige C++-standardbibliotekene som og for å muliggjøre bruk av henholdsvis input/output-operasjoner og 'std::map'-beholderen. Innenfor 'hoved'-funksjonen initialiserer vi 'std::map' kalt 'myMap' der heltallsnøklene er assosiert med tilsvarende strengverdier. Tre nøkkelverdi-par er lagt til kartet som representerer fargene: 'Rød' for tast 1, 'Blå' for tast 2 og 'Grønn' for tast 3. Deretter bruker vi 'slett'-medlemsfunksjonen til ' std::map'-klassen for å fjerne elementet knyttet til nøkkel 2 fra kartet vårt. Følgelig er den 'blå' fargen ikke lenger en del av kartet etter denne operasjonen.



For å vise den resulterende tilstanden til kartet bruker vi en 'for'-løkke som itererer gjennom hvert nøkkelverdi-par i 'myMap'. Vi bruker 'std::cout'-objektet inne i løkken for å skrive ut hvert nøkkelverdi-par til konsollen. Til slutt avslutter 'retur 0'-setningen 'hoved'-funksjonen som signaliserer vellykket gjennomføring av programmet vårt.





Utdataene viser de gjenværende nøkkelverdi-parene i 'std::map' etter at elementet med nøkkel 2 ('Blå') er slettet, noe som resulterer i '1: Rød' og '3: Grønn' utdata.



Eksempel 2: Sletting med Iterator

I C++ er iteratorer objekter som letter navigeringen av elementer i en beholder, og tilbyr en måte å få tilgang til, modifisere eller fjerne elementene. Funksjonen 'std::map::erase' kan også brukes med iteratorer for å fjerne elementene.

Her er et eksempel:

#include
#inkluder

int main ( ) {
std::kart < int, std::streng > fruktmappe;
fruktmappe [ 1 ] = 'Mango' ;
fruktmappe [ 2 ] = 'Oransje' ;
fruktmappe [ 3 ] = 'Ananas' ;
fruktmappe [ 4 ] = 'Druer' ;

auto it = fruitMap.find ( 2 ) ;

hvis ( den ! = fruitMap.end ( ) ) {
fruitMap.erase ( den ) ;
}

til ( const auto & par: fruitMap ) {
std::cout << par.først << ': ' << par.sekund << std::endl;
}

komme tilbake 0 ;
}


Den oppgitte C++-koden begynner med å deklarere et 'std::map' kalt 'fruitMap' for å lagre nøkkelverdi-parene, og assosierer heltallene med tilsvarende fruktnavn. Vi fyller ut kartet med oppføringer for fire forskjellige frukter: 'Mango', 'Oransje', 'Ananas' og 'Druer'. Etter det bruker vi 'finn'-funksjonen for å få en iterator (it) som peker til elementet med nøkkelverdien 2 i 'fruitMap'. Deretter sjekker vi om iteratoren ikke er lik 'end()' for å sikre at elementet med den angitte nøkkelen finnes i kartet.

I den betingede blokken sletter vi elementet som er pekt på av 'it'-iteratoren ved å bruke 'slett'-funksjonen. Til slutt itererer vi gjennom de gjenværende elementene i det modifiserte 'fruitMap' ved å bruke en 'for'-løkke.

Den endelige utgangen viser det modifiserte 'fruitMap'-innholdet etter slettingen.

Eksempel 3: Slette et område

'std::map'-beholderen i C++ gir en praktisk metode for å slette elementene innenfor et spesifisert område. 'Slett'-funksjonen lar deg fjerne elementene fra kartet basert på iteratorer som representerer begynnelsen og slutten av området som skal slettes.

La oss nå utforske konseptet med å slette et område ved å bruke 'std::map' med et eksempel:

#include
#inkluder

int main ( ) {
std::kart < int, std::streng > nytt kart;
nytt kart [ 1 ] = 'Hest' ;
nytt kart [ 2 ] = 'Løve' ;
nytt kart [ 3 ] = 'Tiger' ;
nytt kart [ 4 ] = 'Katt' ;

nytt Kart.slett ( newMap.lower_bound ( 2 ) , newMap.upper_bound ( 3 ) ) ;

til ( const auto & par: nyttKart ) {
std::cout << par.først << ': ' << par.sekund << std::endl;
}

komme tilbake 0 ;
}


Programmet begynner med å erklære et 'std::map' kalt 'newMap' som assosierer heltallsnøklene med tilsvarende strengverdier. Etter det fyller vi kartet med nøkkelverdi-par ved å bruke operatøren for hakeparentes. For eksempel tildeler vi nøkkelverdi-parene (1, «Hest»), (2, «Løve»), (3, «Tiger») og (4, «Katt») til «newMap».

Den neste betydelige operasjonen innebærer å bruke iteratorene til å slette elementene fra kartet. Slettefunksjonen brukes med argumentene 'newMap.lower_bound(2)' og 'newMap.upper_bound(3)'. Dette sletter elementene med taster som faller i området (2, 3). Med andre ord, den fjerner oppføringene 'Lion' og 'Tiger' fra kartet. Etter denne operasjonen inneholder kartet bare elementene med tastene 1 og 4, som tilsvarer 'Hest' og 'Cat'.

Til slutt bruker vi en rekkeviddebasert 'for'-løkke for å iterere gjennom de gjenværende elementene i kartet og skrive ut nøkkelverdi-parene deres til konsollen.

Som et resultat viser utgangen følgende:

Eksempel 4: Sletting basert på et predikat

Sletting basert på et predikat refererer til å fjerne elementene fra en datastruktur, for eksempel en beholder, basert på en spesifisert betingelse eller kriterier. 'std::map::erase' kan også brukes med en predikatfunksjon for å fjerne elementene betinget. La oss vurdere følgende eksempel:

#include
#inkluder
#include

int main ( ) {

std::kart < int, std::streng > mitt kart = {
{ 1 , 'Januar' } ,
{ 2 , 'Februar' } ,
{ 3 , 'Mars' } ,
{ 4 , 'April' } ,
{ 5 , 'Kan' }
} ;

autopredikat = [ ] ( const std::pair < int, std::streng >& element ) {
komme tilbake element.andre.lengde ( ) < 5 ;
} ;

mitt kart.slett ( std::remove_if ( myMap.begin ( ) , myMap.end ( ) , predikat ) , myMap.end ( ) ) ;

std::cout << ' \n Kart etter å ha slettet elementer basert på predikatet:' << std::endl;
til ( const auto & par: myMap ) {
std::cout << par.først << ': ' << par.sekund << std::endl;
}

komme tilbake 0 ;
}


Programmet begynner med å inkludere de nødvendige header-filene. Et 'std::map' kalt 'myMap' er deklarert og initialisert i 'main'-funksjonen. Den inneholder nøkkel-verdi-parene som representerer månedenes navn og deres respektive numeriske verdier. Deretter blir en 'lambda'-funksjon (predikat) definert. Denne «lambda»-funksjonen fungerer som et predikat for «std::remove_if»-algoritmen. Den verifiserer om lengden på strengverdien som er knyttet til et kartelement er mindre enn fem tegn.

Algoritmen 'std::remove_if' brukes deretter sammen med 'slette'-funksjonen til 'std::kartet'. Denne kombinasjonen fjerner elementene fra kartet basert på gyldigheten til predikatet.

Etter å ha kjørt programmet, fjernes elementene med nøkler mindre enn fem fra det originale kartet, noe som demonstrerer slettingen basert på et predikat ved å bruke 'std::map'.

Konklusjon

Avslutningsvis er 'std::map::erase'-funksjonen et allsidig verktøy i C++ for å fjerne elementene fra 'std::map'. Enten du sletter med nøkkel, iterator, rekkevidde eller basert på et predikat, gir funksjonen 'std::map::erase' fleksibilitet og brukervennlighet. Ved å mestre denne funksjonen kan C++-utviklerne effektivt administrere og manipulere dataene i 'std::map'-beholdere, noe som gjør koden deres sterkere og enklere å vedlikeholde.