Príklady C++ Std::Map::Erase

Priklady C Std Map Erase



Spomedzi mnohých operácií dostupných pre „std::map“ vyniká funkcia „erase“ ako kľúčový nástroj na odstránenie prvkov na základe ich kľúčov. „Std::map“ je organizovaný asociatívny kontajner, ktorý pozostáva z párov kľúč – hodnota. Usporiadanie prvkov v rámci „std::map“ je dôsledne zoradené podľa ich kľúčov, čo uľahčuje efektívne operácie, ako je vyhľadávanie, vkladanie a mazanie na základe hodnôt kľúča.

V oblasti C++ slúži funkcia „std::map::erase“ ako členská funkcia triedy „std::map“, ktorá umožňuje elimináciu špecifických prvkov z mapy. Dodáva sa v rôznych formách a poskytuje flexibilitu pri špecifikovaní prvkov, ktoré sa majú vymazať. V tomto článku sa ponoríme do detailov „std::map::erase“ a poskytneme niekoľko príkladov na ilustráciu jeho všestrannosti.







Príklad 1: Vymazanie kľúčom

Schopnosť vymazať prvky kľúčom v „std::map“ je základná funkcia, ktorú poskytuje C++ Standard Template Library. Táto operácia sa bežne používa, keď potrebujete spravovať a manipulovať s pármi kľúč – hodnota v programe, a poskytuje pohodlný spôsob, ako odstrániť špecifické prvky na základe ich kľúčov. Vytvoríme príklad, ktorý demonštruje, ako použiť „std::map“ na vytvorenie mapy, vymazanie prvku po kľúči a následné zobrazenie upravenej mapy.



#include
#include

int main ( ) {
std::map < int, std::string > moja mapa;
mojaMapa [ 1 ] = 'červená' ;
mojaMapa [ 2 ] = 'Modrá' ;
mojaMapa [ 3 ] = 'Zelená' ;

myMap.erase ( 2 ) ;

pre ( const auto & pár: moja mapa ) {
std::cout << pár.prvý << ': ' << pár.druhý << std::endl;
}

vrátiť 0 ;
}


V tomto príklade začneme zahrnutím potrebných štandardných knižníc C++, ako sú a , aby sme umožnili použitie vstupných/výstupných operácií a kontajnera „std::map“. V rámci funkcie „main“ inicializujeme „std::map“ s názvom „myMap“, kde sú celočíselné kľúče spojené s príslušnými hodnotami reťazca. Do mapy sa pridajú tri páry kľúč – hodnota, ktoré predstavujú farby: „Červená“ pre kľúč 1, „Modrá“ pre kľúč 2 a „Zelená“ pre kľúč 3. Potom použijeme členskú funkciu „vymazať“ v „ std::map” na odstránenie prvku spojeného s kľúčom 2 z našej mapy. V dôsledku toho už po tejto operácii „Modrá“ farba nie je súčasťou mapy.



Na zobrazenie výsledného stavu mapy používame cyklus „for“, ktorý iteruje cez každý pár kľúč – hodnota v rámci „myMap“. Používame objekt „std::cout“ vo vnútri slučky na tlač každého páru kľúč – hodnota do konzoly. Nakoniec príkaz „návrat 0“ uzatvára „hlavnú“ funkciu, ktorá signalizuje úspešné vykonanie nášho programu.





Výstup zobrazuje zostávajúce páry kľúč – hodnota v „std::map“ po vymazaní prvku s kľúčom 2 („Modrá“), čo vedie k výstupu „1: Červená“ a „3: Zelená“.



Príklad 2: Vymazanie iterátorom

V C++ sú iterátory objekty, ktoré uľahčujú navigáciu prvkov v kontajneri a ponúkajú prostriedky na prístup, úpravu alebo odstránenie prvkov. Funkciu „std::map::erase“ je možné použiť aj s iterátormi na odstránenie prvkov.

Tu je príklad:

#include
#include

int main ( ) {
std::map < int, std::string > fruitFolder;
fruitFolder [ 1 ] = 'Mango' ;
fruitFolder [ 2 ] = 'oranžový' ;
fruitFolder [ 3 ] = 'PineApple' ;
fruitFolder [ 4 ] = 'hrozno' ;

auto it = fruitMap.find ( 2 ) ;

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

pre ( const auto & pár : ovocieMapa ) {
std::cout << pár.prvý << ': ' << pár.druhý << std::endl;
}

vrátiť 0 ;
}


Poskytnutý kód C++ začína deklarovaním „std::map“ s názvom „fruitMap“ na uloženie párov kľúč-hodnota, pričom celé čísla priradí zodpovedajúcim názvom ovocia. Mapu vyplníme záznamami pre štyri rôzne druhy ovocia: „Mango“, „Pomaranč“, „PineApple“ a „Hrozno“. Potom použijeme funkciu „nájsť“ na získanie iterátora (toho), ktorý ukazuje na prvok s hodnotou kľúča 2 v rámci „fruitMap“. Potom skontrolujeme, či sa iterátor nerovná „end()“, aby sme sa uistili, že prvok so zadaným kľúčom na mape existuje.

V podmienenom bloku vymažeme prvok, na ktorý ukazuje iterátor „it“ pomocou funkcie „erase“. Nakoniec iterujeme cez zostávajúce prvky v upravenej „fruitMap“ pomocou cyklu „for“.

Na konečnom výstupe sa po vymazaní zobrazí upravený obsah „ovocnej mapy“.

Príklad 3: Vymazanie rozsahu

Kontajner „std::map“ v C++ poskytuje pohodlnú metódu na vymazanie prvkov v špecifikovanom rozsahu. Funkcia „erase“ vám umožňuje odstrániť prvky z mapy na základe iterátorov, ktoré predstavujú začiatok a koniec rozsahu, ktorý sa má vymazať.

Teraz preskúmame koncept vymazania rozsahu pomocou „std::map“ s príkladom:

#include
#include

int main ( ) {
std::map < int, std::string > nová mapa;
nová mapa [ 1 ] = 'kôň' ;
nová mapa [ 2 ] = 'lev' ;
nová mapa [ 3 ] = 'tiger' ;
nová mapa [ 4 ] = 'mačka' ;

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

pre ( const auto & pár: nová mapa ) {
std::cout << pár.prvý << ': ' << pár.druhý << std::endl;
}

vrátiť 0 ;
}


Program začína deklarovaním „std::map“ s názvom „newMap“, ktorý spája celočíselné kľúče s príslušnými hodnotami reťazca. Potom mapu vyplníme pármi kľúč – hodnota pomocou operátora hranatých zátvoriek. Napríklad páry kľúč – hodnota (1, „Kôň“), (2, „Lev“), (3, „Tiger“) a (4, „Mačka“) priradíme k „novej mape“.

Ďalšia významná operácia zahŕňa použitie iterátorov na vymazanie prvkov z mapy. Funkcia vymazania sa používa s argumentmi „newMap.lower_bound(2)“ a „newMap.upper_bound(3)“. Tým sa vymažú prvky s klávesmi, ktoré spadajú do rozsahu (2, 3). Inými slovami, odstráni položky „Lev“ a „Tiger“ z mapy. Po tejto operácii mapa obsahuje iba prvky s klávesmi 1 a 4, ktoré zodpovedajú „Kôň“ a „Mačka“.

Nakoniec použijeme cyklus „for“ založený na rozsahu na iteráciu cez zostávajúce prvky na mape a tlač ich párov kľúč-hodnota do konzoly.

Výsledkom je, že výstup zobrazuje nasledovné:

Príklad 4: Vymazanie na základe predikátu

Vymazanie na základe predikátu sa vzťahuje na odstránenie prvkov z dátovej štruktúry, ako je kontajner, na základe špecifikovanej podmienky alebo kritérií. „Std::map::erase“ možno použiť aj s predikátovou funkciou na podmienečné odstránenie prvkov. Uvažujme o nasledujúcom príklade:

#include
#include
#include

int main ( ) {

std::map < int, std::string > moja mapa = {
{ 1 , 'január' } ,
{ 2 , 'február' } ,
{ 3 , 'marec' } ,
{ 4 , 'apríl' } ,
{ 5 , 'Smieť' }
} ;

automatický predikát = [ ] ( const std::pair < int, std::string >& element ) {
vrátiť prvok.druhá.dĺžka ( ) < 5 ;
} ;

myMap.erase ( std::remove_if ( myMap.begin ( ) , myMap.end ( ) , predikát ) , myMap.end ( ) ) ;

std::cout << ' \n Mapa po vymazaní prvkov na základe predikátu:' << std::endl;
pre ( const auto & pár: moja mapa ) {
std::cout << pár.prvý << ': ' << pár.druhý << std::endl;
}

vrátiť 0 ;
}


Program začína zahrnutím potrebných hlavičkových súborov. „Std::map“ s názvom „myMap“ je deklarovaný a inicializovaný vo funkcii „main“. Obsahuje páry kľúč – hodnota, ktoré predstavujú názvy mesiacov a ich príslušné číselné hodnoty. Následne je definovaná „lambda“ funkcia (predikát). Táto funkcia „lambda“ slúži ako predikát pre algoritmus „std::remove_if“. Overuje, či je dĺžka hodnoty reťazca, ktorá je spojená s prvkom mapy, menšia ako päť znakov.

Algoritmus „std::remove_if“ sa potom použije v spojení s funkciou „erase“ funkcie „std::map“. Táto kombinácia odstraňuje prvky z mapy na základe platnosti predikátu.

Po spustení programu sa prvky s kľúčmi menšími ako päť odstránia z pôvodnej mapy, čo demonštruje vymazanie na základe predikátu pomocou „std::map“.

Záver

Na záver, funkcia „std::map::erase“ je všestranný nástroj v C++ na odstránenie prvkov z „std::map“. Či už ide o vymazanie kľúčom, iterátorom, rozsahom alebo na základe predikátu, funkcia „std::map::erase“ poskytuje flexibilitu a jednoduché použitie. Zvládnutím tejto funkcie môžu vývojári C++ efektívne spravovať a manipulovať s údajmi v kontajneroch „std::map“, čím sa ich kód stáva silnejším a ľahšie sa udržiava.