C++ Std::Map::Erase Esimerkkejä

C Std Map Erase Esimerkkeja



Monista 'std::map' -toiminnolle käytettävissä olevista toiminnoista 'erase'-toiminto erottuu tärkeänä työkaluna elementtien poistamiseen niiden avainten perusteella. 'std::map' on järjestetty assosiatiivinen säilö, joka koostuu avain-arvo-pareista. Elementtien järjestely 'std::map':ssa on johdonmukaisesti lajiteltu avaimien mukaan, mikä helpottaa tehokkaita toimintoja, kuten hakua, lisäämistä ja poistamista avainarvojen perusteella.

C++:n sisällä 'std::map::erase'-funktio toimii 'std::map'-luokan jäsenfunktiona, mikä mahdollistaa tiettyjen elementtien poistamisen kartalta. Sitä on eri muodoissa, mikä tarjoaa joustavuutta määritettäessä, mitkä elementit poistetaan. Tässä artikkelissa perehdymme 'std::map::erase' -sovelluksen yksityiskohtiin tarjoamalla useita esimerkkejä havainnollistamaan sen monipuolisuutta.







Esimerkki 1: Poistaminen avaimella

Mahdollisuus poistaa elementit avaimella 'std::map' on C++ Standard Template Libraryn perusominaisuus. Tätä toimintoa käytetään yleisesti, kun haluat hallita ja käsitellä ohjelman avain-arvo-pareja, ja se tarjoaa kätevän tavan poistaa tietyt elementit niiden avaimien perusteella. Luomme esimerkin havainnollistamaan, kuinka 'std::map':lla luodaan kartta, poistetaan elementti avaimella ja näytetään sitten muokattu kartta.



#include
#sisällytä

int main ( ) {
std::map < int, std::string > myMap;
myMap [ 1 ] = 'Punainen' ;
myMap [ 2 ] = 'Sininen' ;
myMap [ 3 ] = 'Vihreä' ;

myMap.erase ( 2 ) ;

varten ( const auto & pari : myMap ) {
std::cout << pari.ensin << ':' << pari.sekunti << std::endl;
}

palata 0 ;
}


Tässä esimerkissä aloitamme sisällyttämällä tarvittavat C++-standardikirjastot, kuten ja , jotta voidaan käyttää syöttö-/tulostustoimintoja ja 'std::map'-säilö, vastaavasti. 'Main'-funktiossa alustamme 'std::map'-nimisen 'myMap', jossa kokonaislukuavaimet liittyvät vastaaviin merkkijonoarvoihin. Karttaan lisätään kolme avainarvoparia, jotka edustavat värejä: 'Punainen' näppäimelle 1, 'Sininen' näppäimelle 2 ja 'Vihreä' näppäimelle 3. Tämän jälkeen käytämme 'poisto' -jäsentoimintoa. std::map” luokka poistaaksesi avaimeen 2 liittyvän elementin kartastamme. Näin ollen 'sininen' väri ei ole enää osa karttaa tämän toimenpiteen jälkeen.



Kartan tuloksena olevan tilan esittelemiseksi käytämme 'for'-silmukkaa, joka toistuu jokaisen avainarvoparin läpi 'myMapissa'. Käytämme 'std::cout' -objektia silmukan sisällä tulostaaksemme jokaisen avainarvoparin konsoliin. Lopuksi 'return 0' -lause päättää 'main'-funktion, joka ilmaisee ohjelmamme onnistuneen suorittamisen.





Tulos näyttää jäljellä olevat avainarvoparit 'std::map' -kentässä sen jälkeen, kun elementti avaimella 2 ('Blue') on poistettu, jolloin tuloksena on '1: Red' ja '3: Green'.



Esimerkki 2: Iteratorin poistaminen

C++:ssa iteraattorit ovat objekteja, jotka helpottavat elementtien navigointia säilön sisällä ja tarjoavat keinon käyttää, muokata tai poistaa elementtejä. 'std::map::erase'-funktiota voidaan käyttää myös iteraattorien kanssa elementtien poistamiseen.

Tässä on esimerkki:

#include
#sisällytä

int main ( ) {
std::map < int, std::string > hedelmä kansio;
hedelmäkansio [ 1 ] = 'Mango' ;
hedelmäkansio [ 2 ] = 'Oranssi' ;
hedelmäkansio [ 3 ] = 'Ananas' ;
hedelmäkansio [ 4 ] = 'rypäleet' ;

auto it = hedelmäMap.find ( 2 ) ;

jos ( se ! = hedelmäMap.end ( ) ) {
fruitMap.erase ( se ) ;
}

varten ( const auto & pari: hedelmäkartta ) {
std::cout << pari.ensin << ':' << pari.sekunti << std::endl;
}

palata 0 ;
}


Annettu C++-koodi alkaa ilmoittamalla 'std::map' nimeltä 'fruitMap', joka tallentaa avainarvoparit ja yhdistää kokonaisluvut vastaaviin hedelmien nimiin. Täytämme kartan neljän eri hedelmän merkinnöillä: 'Mango', 'Orange', 'PineApple' ja 'Rypäleet'. Tämän jälkeen käytämme 'etsi'-funktiota saadaksemme iteraattorin (se), joka osoittaa elementtiin, jonka avainarvo on 2 'fruitMap' -sovelluksessa. Sitten tarkistamme, ettei iteraattori ole sama kuin 'end()' varmistaaksemme, että määritetyllä avaimella varustettu elementti on olemassa kartassa.

Ehdollisessa lohkossa poistamme elementin, johon iteraattori osoittaa 'erase'-toiminnolla. Lopuksi toistamme muokatun 'fruitMapin' jäljellä olevat elementit 'for' -silmukan avulla.

Lopullinen tulos näyttää muokatun 'fruitMap'-sisällön poistamisen jälkeen.

Esimerkki 3: Alueen poistaminen

C++:n 'std::map'-säilö tarjoaa kätevän tavan poistaa tietyn alueen elementit. 'Poista'-toiminnolla voit poistaa kartalta elementtejä poistettavan alueen alkua ja loppua edustavien iteraattorien perusteella.

Tarkastellaan nyt esimerkin avulla alueen poistamista 'std::map':n avulla:

#include
#sisällytä

int main ( ) {
std::map < int, std::string > uusi kartta;
uusi kartta [ 1 ] = 'Hevonen' ;
uusi kartta [ 2 ] = 'Leijona' ;
uusi kartta [ 3 ] = 'Tiikeri' ;
uusi kartta [ 4 ] = 'Kissa' ;

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

varten ( const auto & pari : uusi kartta ) {
std::cout << pari.ensin << ':' << pari.sekunti << std::endl;
}

palata 0 ;
}


Ohjelma alkaa ilmoittamalla 'std::map' nimeltä 'newMap', joka yhdistää kokonaislukuavaimet vastaaviin merkkijonoarvoihin. Tämän jälkeen täytämme kartan avainarvo-pareilla käyttämällä hakasulkeoperaattoria. Määritämme esimerkiksi avainarvoparit (1, “hevonen”), (2, “leijona”), (3, “tiikeri”) ja (4, “kissa”) kohtaan “newMap”.

Seuraava merkittävä toimenpide on iteraattorien käyttäminen elementtien poistamiseen kartalta. Poistotoimintoa käytetään 'newMap.lower_bound(2)'- ja 'newMap.upper_bound(3)'-argumenttien kanssa. Tämä poistaa elementit näppäimillä, jotka kuuluvat alueelle (2, 3). Toisin sanoen se poistaa kartalta merkinnät 'Leijona' ja 'Tiikeri'. Tämän toimenpiteen jälkeen kartta sisältää vain elementit näppäimillä 1 ja 4, jotka vastaavat 'Hevonen' ja 'Kissa'.

Lopuksi käytämme aluepohjaista 'for'-silmukkaa iteroidaksemme kartan jäljellä olevat elementit ja tulostaa niiden avainarvoparit konsoliin.

Tämän seurauksena tulos näyttää seuraavan:

Esimerkki 4: Poistaminen predikaatin perusteella

Predikaattiin perustuva poistaminen tarkoittaa elementtien poistamista tietorakenteesta, kuten säilöstä, tietyn ehdon tai kriteerien perusteella. 'std::map::erase' voidaan käyttää myös predikaattifunktion kanssa elementtien poistamiseksi ehdollisesti. Tarkastellaanpa seuraavaa esimerkkiä:

#include
#sisällytä
#include

int main ( ) {

std::map < int, std::string > myMap = {
{ 1 , 'Tammikuu' } ,
{ 2 , 'Helmikuu' } ,
{ 3 , 'maaliskuu' } ,
{ 4 , 'Huhtikuu' } ,
{ 5 , 'Saattaa' }
} ;

automaattinen predikaatti = [ ] ( const std::pair < int, std::string >& elementti ) {
palata elementti.sekunti.pituus ( ) < 5 ;
} ;

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

std::cout << ' \n Kartta elementtien poistamisen jälkeen predikaatin perusteella:' << std::endl;
varten ( const auto & pari : myMap ) {
std::cout << pari.ensin << ':' << pari.sekunti << std::endl;
}

palata 0 ;
}


Ohjelma alkaa lisäämällä tarvittavat otsikkotiedostot. 'std::map' nimeltä 'myMap' ilmoitetaan ja alustetaan 'main'-funktiossa. Se sisältää avainarvoparit, jotka edustavat kuukausien nimiä ja niitä vastaavia numeerisia arvoja. Tämän jälkeen määritellään 'lambda'-funktio (predikaatti). Tämä 'lambda'-funktio toimii predikaattina 'std::remove_if'-algoritmille. Se tarkistaa, onko karttaelementtiin liittyvän merkkijonon arvon pituus alle viisi merkkiä.

'std::remove_if'-algoritmia käytetään sitten yhdessä 'std::map'-funktion 'erase' kanssa. Tämä yhdistelmä poistaa elementit kartalta predikaatin pätevyyden perusteella.

Ohjelman suorittamisen jälkeen alkiot, joiden avaimet ovat alle viisi, poistetaan alkuperäisestä kartasta, mikä osoittaa poiston predikaatin perusteella käyttämällä 'std::map'.

Johtopäätös

Yhteenvetona voidaan todeta, että 'std::map::erase'-toiminto on monipuolinen työkalu C++:ssa elementtien poistamiseen 'std::mapista'. 'std::map::erase'-toiminto tarjoaa joustavuutta ja helppokäyttöisyyttä riippumatta siitä, poistetaanko se avaimella, iteraattorilla, alueella tai predikaatin perusteella. Hallitsemalla tämän toiminnon C++-kehittäjät voivat tehokkaasti hallita ja käsitellä 'std::map'-säilöissä olevia tietoja tehden koodistaan ​​vahvemman ja helpompia ylläpitää.