C++ Std::Map::Erase pavyzdžiai

C Std Map Erase Pavyzdziai



Tarp daugybės „std::map“ operacijų, „trinimo“ funkcija išsiskiria kaip svarbi priemonė elementams pašalinti pagal jų klavišus. „std::map“ yra organizuotas asociatyvus konteineris, kurį sudaro raktų ir reikšmių poros. Elementų išdėstymas „std::map“ yra nuosekliai rūšiuojamas pagal jų raktus, palengvinant veiksmingas operacijas, tokias kaip paieška, įterpimas ir trynimas, remiantis pagrindinėmis reikšmėmis.

C++ srityje funkcija „std::map::erase“ yra „std::map“ klasės nario funkcija, leidžianti pašalinti konkrečius elementus iš žemėlapio. Jis pateikiamas įvairių formų, todėl suteikia lankstumo nurodant, kuriuos elementus ištrinti. Šiame straipsnyje mes įsigilinsime į „std::map::erase“ detales, pateikdami kelis jo universalumą iliustruojančius pavyzdžius.







1 pavyzdys: trynimas raktu

Galimybė ištrinti elementus klavišu „std::map“ yra pagrindinė C++ standartinės šablonų bibliotekos funkcija. Ši operacija dažniausiai naudojama, kai reikia tvarkyti ir manipuliuoti programoje esančiomis raktų ir reikšmių poromis, ir tai yra patogus būdas pašalinti konkrečius elementus pagal jų raktus. Sukursime pavyzdį, kad parodytume, kaip naudoti „std::map“ kuriant žemėlapį, ištrinti elementą pagal klavišą ir tada rodyti pakeistą žemėlapį.



#include
#įtraukti <žemėlapį>

tarp pagrindinis ( ) {
std::žemėlapis < int, std::string > mano žemėlapis;
mano žemėlapis [ 1 ] = 'raudona' ;
mano žemėlapis [ 2 ] = 'mėlyna' ;
mano žemėlapis [ 3 ] = 'Žalias' ;

myMap.erase ( 2 ) ;

dėl ( const auto & pora: mano žemėlapis ) {
std::cout << pora.pirma << ':' << pora.antra << std::endl;
}

grąžinti 0 ;
}


Šiame pavyzdyje pradedame įtraukti būtinas C++ standartines bibliotekas, tokias kaip ir , kad būtų galima naudoti atitinkamai įvesties/išvesties operacijas ir konteinerį „std::map“. „Pagrindinėje“ funkcijoje inicijuojame „std::map“, pavadintą „myMap“, kur sveikųjų skaičių raktai yra susieti su atitinkamomis eilutės reikšmėmis. Prie žemėlapio pridedamos trys raktų ir reikšmių poros, atspindinčios spalvas: „Raudona“ – 1 klavišui, „Mėlyna“ – 2 klavišui ir „Žalia“ – 3 klavišui. Tada naudojame „ištrinti“ nario funkciją. std::map“ klasę, kad pašalintumėte su 2 raktu susietą elementą iš mūsų žemėlapio. Todėl po šios operacijos „mėlyna“ spalva nebėra žemėlapio dalis.



Norėdami parodyti susidariusią žemėlapio būseną, naudojame „for“ kilpą, kuri kartojasi per kiekvieną „myMap“ rakto-reikšmių porą. Mes naudojame 'std::cout' objektą ciklo viduje, kad išspausdintume kiekvieną rakto ir reikšmių porą konsolėje. Galiausiai teiginys „return 0“ užbaigia „pagrindinę“ funkciją, kuri rodo sėkmingą mūsų programos vykdymą.





Išvestyje rodomos likusios rakto-reikšmių poros „std::map“ po to, kai elementas su 2 klavišu („Mėlyna“) yra ištrintas, o tai lemia „1: Red“ ir „3: Green“ išvestį.



2 pavyzdys: ištrynimas naudojant Iteratorių

C++ kalboje iteratoriai yra objektai, palengvinantys elementų naršymą konteineryje, siūlantys priemones pasiekti, modifikuoti arba pašalinti elementus. Funkciją „std::map::erase“ taip pat galima naudoti su iteratoriais elementams pašalinti.

Štai pavyzdys:

#include
#įtraukti <žemėlapį>

tarp pagrindinis ( ) {
std::žemėlapis < int, std::string > vaisių aplankas;
vaisių aplankas [ 1 ] = 'Mango' ;
vaisių aplankas [ 2 ] = 'oranžinė' ;
vaisių aplankas [ 3 ] = 'PineApple' ;
vaisių aplankas [ 4 ] = 'Vynuogės' ;

auto it = fruitMap.find ( 2 ) ;

jeigu ( tai ! = vaisiaiMap.end ( ) ) {
vaisiųŽemėlapis.ištrinti ( tai ) ;
}

dėl ( const auto & pora: vaisiaiŽemėlapis ) {
std::cout << pora.pirma << ':' << pora.antra << std::endl;
}

grąžinti 0 ;
}


Pateiktas C++ kodas prasideda deklaruojant „std::map“, pavadintą „fruitMap“, kad būtų saugomos raktų ir reikšmių poros, susiejant sveikuosius skaičius su atitinkamais vaisių pavadinimais. Žemėlapį užpildome keturių skirtingų vaisių įrašais: „Mango“, „Orange“, „PineApple“ ir „Vynuogės“. Po to mes naudojame funkciją „rasti“, kad gautume iteratorių (jį), kuris „fruitMap“ nurodo elementą, kurio pagrindinė reikšmė yra 2. Tada patikriname, ar iteratorius nėra lygus „end()“, kad įsitikintume, jog elementas su nurodytu raktu egzistuoja žemėlapyje.

Sąlyginiame bloke ištriname elementą, į kurį nurodo iteratorius, naudodami funkciją „ištrinti“. Galiausiai pakartojame likusius modifikuoto „fruitMap“ elementus naudodami „for“ kilpą.

Galutinėje išvestyje rodomas pakeistas „fruitMap“ turinys po ištrynimo.

3 pavyzdys: diapazono ištrynimas

„std::map“ konteineris C++ suteikia patogų būdą ištrinti elementus nurodyto diapazono viduje. Funkcija „Ištrinti“ leidžia pašalinti elementus iš žemėlapio, remiantis iteratoriais, kurie nurodo šalinamo diapazono pradžią ir pabaigą.

Dabar panagrinėkime diapazono ištrynimo naudojant „std::map“ koncepciją su pavyzdžiu:

#include
#įtraukti <žemėlapį>

tarp pagrindinis ( ) {
std::žemėlapis < int, std::string > naujas žemėlapis;
naujas žemėlapis [ 1 ] = 'arklys' ;
naujas žemėlapis [ 2 ] = 'Liūtas' ;
naujas žemėlapis [ 3 ] = 'Tigras' ;
naujas žemėlapis [ 4 ] = 'Katė' ;

naujasMap.trinti ( newMap.lower_bound ( 2 ) , newMap.upper_bound ( 3 ) ) ;

dėl ( const auto & pora: naujas žemėlapis ) {
std::cout << pora.pirma << ':' << pora.antra << std::endl;
}

grąžinti 0 ;
}


Programa pradedama deklaruojant „std::map“, pavadintą „newMap“, kuris susieja sveikųjų skaičių raktus su atitinkamomis eilutės reikšmėmis. Po to žemėlapį užpildome raktų ir reikšmių poromis, naudodami laužtinių skliaustų operatorių. Pavyzdžiui, raktų-reikšmių poras (1, „Arklys“), (2, „Liūtas“), (3, „Tigras“) ir (4, „Katė“) priskiriame „newMap“.

Kita svarbi operacija apima iteratorių naudojimą elementams iš žemėlapio ištrinti. Ištrynimo funkcija naudojama su „newMap.lower_bound(2)“ ir „newMap.upper_bound(3)“ argumentais. Taip ištrinami elementai su klavišais, kurie patenka į diapazoną (2, 3). Kitaip tariant, jis pašalina iš žemėlapio įrašus „Liūtas“ ir „Tigras“. Po šios operacijos žemėlapyje yra tik elementai su klavišais 1 ir 4, atitinkantys „Arklys“ ir „Katė“.

Galiausiai naudojame diapazonu pagrįstą „for“ kilpą, kad galėtume kartoti likusius žemėlapio elementus ir atspausdinti jų raktų ir reikšmių poras konsolėje.

Dėl to išvestyje rodoma ši informacija:

4 pavyzdys: ištrynimas remiantis predikatu

Ištrynimas remiantis predikatu reiškia elementų pašalinimą iš duomenų struktūros, pvz., konteinerio, remiantis nurodyta sąlyga arba kriterijais. „std::map::erase“ taip pat gali būti naudojama su predikato funkcija, norint sąlygiškai pašalinti elementus. Panagrinėkime šį pavyzdį:

#include
#įtraukti <žemėlapį>
#include

tarp pagrindinis ( ) {

std::žemėlapis < int, std::string > mano žemėlapis = {
{ 1 , 'sausis' } ,
{ 2 , 'vasaris' } ,
{ 3 , 'Kovas' } ,
{ 4 , 'Balandis' } ,
{ 5 , 'Gegužė' }
} ;

automatinis predikatas = [ ] ( const std::pair < int, std::string >& elementas ) {
grąžinti elementas.antrasis.ilgis ( ) < 5 ;
} ;

myMap.erase ( std::remove_if ( mano žemėlapis.pradėkite ( ) , myMap.end ( ) , predikatas ) , myMap.end ( ) ) ;

std::cout << \n Žemėlapis ištrynus elementus pagal predikatą:' << std::endl;
dėl ( const auto & pora: mano žemėlapis ) {
std::cout << pora.pirma << ':' << pora.antra << std::endl;
}

grąžinti 0 ;
}


Programa pradedama įtraukiant reikiamus antraštės failus. „std::map“, vadinamas „myMap“, yra deklaruojamas ir inicijuojamas „pagrindinėje“ funkcijoje. Jame yra raktų ir reikšmių poros, nurodančios mėnesių pavadinimus ir atitinkamas jų skaitines reikšmes. Vėliau apibrėžiama „lambda“ funkcija (predikatas). Ši funkcija „lambda“ naudojama kaip „std::remove_if“ algoritmo predikatas. Jis patikrina, ar su žemėlapio elementu susietos eilutės reikšmės ilgis yra mažesnis nei penki simboliai.

Tada „std::remove_if“ algoritmas naudojamas kartu su „std::map“ funkcija „ištrinti“. Šis derinys pašalina elementus iš žemėlapio pagal predikato galiojimą.

Paleidus programą, elementai, kurių klavišai mažesni nei penki, pašalinami iš pradinio žemėlapio, demonstruojant ištrynimą pagal predikatą naudojant „std::map“.

Išvada

Apibendrinant, funkcija „std::map::erase“ yra universalus įrankis C++, skirtas pašalinti elementus iš „std::map“. Nesvarbu, ar ištrinama raktu, iteratoriumi, diapazonu ar predikatu, funkcija „std::map::erase“ suteikia lankstumo ir naudojimo paprastumo. Įvaldę šią funkciją, C++ kūrėjai gali efektyviai valdyti ir manipuliuoti „std::map“ konteineriuose esančiais duomenimis, todėl jų kodas tampa stipresnis ir lengviau prižiūrimas.