C++ Std::Map::Erase Primeri

C Std Map Erase Primeri



Med številnimi operacijami, ki so na voljo za »std::map«, funkcija »brisanje« izstopa kot ključno orodje za odstranjevanje elementov na podlagi njihovih ključev. »std::map« je organiziran asociativni vsebnik, ki je sestavljen iz parov ključ-vrednost. Razporeditev elementov znotraj »std::map« je dosledno razvrščena glede na njihove ključe, kar omogoča učinkovite operacije, kot so iskanje, vstavljanje in brisanje na podlagi ključnih vrednosti.

Znotraj področja C++ služi funkcija »std::map::erase« kot funkcija članica razreda »std::map«, ki omogoča izločanje določenih elementov iz preslikave. Na voljo je v različnih oblikah, kar omogoča prilagodljivost pri določanju elementov, ki jih želite izbrisati. V tem članku se bomo poglobili v podrobnosti »std::map::erase« in navedli več primerov, ki ponazarjajo njegovo vsestranskost.







Primer 1: Brisanje s tipko

Zmožnost brisanja elementov po ključu v »std::map« je temeljna funkcija, ki jo ponuja standardna knjižnica predlog C++. Ta operacija se običajno uporablja, ko morate upravljati in manipulirati s pari ključ-vrednost v programu, in nudi priročen način za odstranitev določenih elementov na podlagi njihovih ključev. Ustvarili bomo primer, ki bo pokazal, kako uporabiti »std::map« za ustvarjanje zemljevida, brisanje elementa s ključem in nato prikaz spremenjenega zemljevida.



#include
#include

int main ( ) {
std::map < int, std::niz > myMap;
myMap [ 1 ] = 'Rdeča' ;
myMap [ 2 ] = 'modra' ;
myMap [ 3 ] = 'Zelena' ;

myMap.erase ( 2 ) ;

za ( const auto & par : myMap ) {
std::cout << par.prvi << ':' << par.drugi << std::endl;
}

vrnitev 0 ;
}


V tem primeru začnemo z vključitvijo potrebnih standardnih knjižnic C++, kot sta in , da omogočimo uporabo vhodno/izhodnih operacij oziroma vsebnika »std::map«. Znotraj funkcije »main« inicializiramo »std::map« z imenom »myMap«, kjer so celoštevilski ključi povezani z ustreznimi vrednostmi niza. Zemljevidu so dodani trije pari ključ-vrednost, ki predstavljajo barve: »rdeča« za tipko 1, »modra« za tipko 2 in »zelena« za tipko 3. Nato uporabimo funkcijo člana »izbriši« funkcije » std::map', da odstranimo element, povezan s ključem 2, iz našega zemljevida. Posledično 'modra' barva po tej operaciji ni več del zemljevida.



Za predstavitev nastalega stanja zemljevida uporabljamo zanko »za«, ki ponavlja skozi vsak par ključ-vrednost znotraj »myMap«. Uporabimo objekt »std::cout« znotraj zanke, da natisnemo vsak par ključ-vrednost na konzolo. Končno stavek 'vrni 0' zaključi 'glavno' funkcijo, ki signalizira uspešno izvedbo našega programa.





Izhod prikaže preostale pare ključev in vrednosti v »std::map« po tem, ko je element s ključem 2 (»Blue«) izbrisan, kar povzroči izhod »1: Red« in »3: Green«.



Primer 2: Brisanje z Iteratorjem

V C++ so iteratorji objekti, ki olajšajo krmarjenje po elementih znotraj vsebnika in ponujajo sredstva za dostop, spreminjanje ali odstranjevanje elementov. Funkcijo »std::map::erase« lahko uporabite tudi z iteratorji za odstranjevanje elementov.

Tukaj je primer:

#include
#include

int main ( ) {
std::map < int, std::niz > fruitFolder;
fruitFolder [ 1 ] = 'Mango' ;
fruitFolder [ 2 ] = 'pomaranča' ;
fruitFolder [ 3 ] = 'Ananal' ;
fruitFolder [ 4 ] = 'Grozdje' ;

auto it = fruitMap.find ( 2 ) ;

če ( to ! = fruitMap.end ( ) ) {
fruitMap.erase ( to ) ;
}

za ( const auto & par : fruitMap ) {
std::cout << par.prvi << ':' << par.drugi << std::endl;
}

vrnitev 0 ;
}


Priložena koda C++ se začne z deklaracijo »std::map« z imenom »fruitMap« za shranjevanje parov ključ-vrednost, ki povezuje cela števila z ustreznimi imeni sadja. Zemljevid zapolnimo z vnosi za štiri različne vrste sadja: »Mango«, »Pomaranča«, »Ananal« in »Grozdje«. Po tem uporabimo funkcijo »find«, da dobimo iterator (it), ki kaže na element s ključno vrednostjo 2 znotraj »fruitMap«. Nato preverimo, ali iterator ni enak »end()«, da zagotovimo, da element z navedenim ključem obstaja v preslikavi.

V pogojnem bloku izbrišemo element, na katerega kaže iterator “it” s funkcijo “erase”. Na koncu ponovimo preostale elemente v spremenjenem »fruitMap« z uporabo zanke »for«.

Končni rezultat prikaže spremenjeno vsebino »fruitMap« po izbrisu.

Primer 3: Brisanje obsega

Vsebnik »std::map« v C++ ponuja priročno metodo za brisanje elementov v določenem obsegu. Funkcija »izbriši« vam omogoča, da odstranite elemente iz zemljevida na podlagi iteratorjev, ki predstavljajo začetek in konec obsega, ki ga želite izbrisati.

Zdaj pa raziščimo koncept brisanja obsega z uporabo »std::map« s primerom:

#include
#include

int main ( ) {
std::map < int, std::niz > nov zemljevid;
newMap [ 1 ] = 'konj' ;
newMap [ 2 ] = 'lev' ;
newMap [ 3 ] = 'Tiger' ;
newMap [ 4 ] = 'Mačka' ;

newMap.erase ( newMap.lower_bound ( 2 ) , newMap.upper_bound ( 3 ) ) ;

za ( const auto & par: nov zemljevid ) {
std::cout << par.prvi << ':' << par.drugi << std::endl;
}

vrnitev 0 ;
}


Program se začne z deklaracijo »std::map« z imenom »newMap«, ki povezuje celoštevilske ključe z ustreznimi vrednostmi niza. Nato zapolnimo zemljevid s pari ključ-vrednost z uporabo operatorja oglatih oklepajev. Na primer, pare ključ-vrednost (1, »Konj«), (2, »Lev«), (3, »Tiger«) in (4, »Mačka«) dodelimo »newMap«.

Naslednja pomembna operacija vključuje uporabo iteratorjev za brisanje elementov iz zemljevida. Funkcija brisanja se uporablja z argumentoma »newMap.lower_bound(2)« in »newMap.upper_bound(3)«. To izbriše elemente s tipkami, ki spadajo v obseg (2, 3). Z drugimi besedami, z zemljevida odstrani vnose »lev« in »tiger«. Po tej operaciji zemljevid vsebuje samo elemente s tipkama 1 in 4, ki ustrezata »Konju« in »Mački«.

Na koncu uporabimo zanko »za«, ki temelji na obsegu, da ponovimo preostale elemente na zemljevidu in natisnemo njihove pare ključ-vrednost na konzolo.

Kot rezultat, izhod prikaže naslednje:

Primer 4: Brisanje na podlagi predikata

Brisanje na podlagi predikata se nanaša na odstranjevanje elementov iz podatkovne strukture, kot je vsebnik, na podlagi določenega pogoja ali kriterijev. »std::map::erase« lahko uporabite tudi s predikatno funkcijo za pogojno odstranjevanje elementov. Oglejmo si naslednji primer:

#include
#include
#include

int main ( ) {

std::map < int, std::niz > moj zemljevid = {
{ 1 , 'januar' } ,
{ 2 , 'februar' } ,
{ 3 , 'marec' } ,
{ 4 , 'april' } ,
{ 5 , 'maj' }
} ;

samodejni predikat = [ ] ( const std::par < int, std::niz >& element ) {
vrnitev element.druga.dolžina ( ) < 5 ;
} ;

myMap.erase ( std::remove_if ( myMap.begin ( ) , myMap.end ( ) , predikat ) , myMap.end ( ) ) ;

std::cout << ' \n Preslikava po brisanju elementov na podlagi predikata:' << std::endl;
za ( const auto & par : myMap ) {
std::cout << par.prvi << ':' << par.drugi << std::endl;
}

vrnitev 0 ;
}


Program se začne z vključitvijo potrebnih datotek glave. »std::map«, imenovan »myMap«, je deklariran in inicializiran v funkciji »main«. Vsebuje pare ključ-vrednost, ki predstavljajo imena mesecev in njihove ustrezne številčne vrednosti. Nato je definirana 'lambda' funkcija (predikat). Ta funkcija »lambda« služi kot predikat za algoritem »std::remove_if«. Preveri, ali je dolžina vrednosti niza, ki je povezana z elementom zemljevida, manjša od petih znakov.

Algoritem »std::remove_if« se nato uporabi v povezavi s funkcijo »izbriši« v »std::map«. Ta kombinacija odstrani elemente iz zemljevida na podlagi veljavnosti predikata.

Po zagonu programa so elementi s ključi, manjšimi od pet, odstranjeni iz izvirnega zemljevida, kar prikazuje brisanje na podlagi predikata z uporabo »std::map«.

Zaključek

Skratka, funkcija »std::map::erase« je vsestransko orodje v C++ za odstranjevanje elementov iz »std::map«. Ne glede na to, ali gre za brisanje po ključu, iteratorju, obsegu ali na podlagi predikata, funkcija »std::map::erase« zagotavlja prilagodljivost in enostavnost uporabe. Z obvladovanjem te funkcije lahko razvijalci C++ učinkovito upravljajo in manipulirajo s podatki v vsebnikih »std::map«, zaradi česar je njihova koda močnejša in lažja za vzdrževanje.