Příklady C++ Std::Map::Erase

Priklady C Std Map Erase



Mezi mnoha operacemi dostupnými pro „std::map“ vyniká funkce „erase“ jako zásadní nástroj pro odstranění prvků na základě jejich klíčů. „Std::map“ je organizovaný asociativní kontejner, který se skládá z párů klíč–hodnota. Uspořádání prvků v rámci „std::map“ je konzistentně seřazeno podle jejich klíčů, což usnadňuje efektivní operace, jako je vyhledávání, vkládání a mazání na základě hodnot klíčů.

V oblasti C++ slouží funkce „std::map::erase“ jako členská funkce třídy „std::map“, která umožňuje eliminaci konkrétních prvků z mapy. Dodává se v různých formách a poskytuje flexibilitu při určování, které prvky se mají vymazat. V tomto článku se ponoříme do podrobností „std::map::erase“ a poskytneme několik příkladů pro ilustraci jeho všestrannosti.







Příklad 1: Mazání pomocí klíče

Schopnost vymazat prvky klíčem v „std::map“ je základní funkcí, kterou poskytuje C++ Standard Template Library. Tato operace se běžně používá, když potřebujete spravovat a manipulovat s páry klíč-hodnota v programu, a poskytuje pohodlný způsob odstranění konkrétních prvků na základě jejich klíčů. Vytvoříme příklad, který demonstruje, jak použít „std::map“ k vytvoření mapy, vymazání prvku pomocí klíče a poté zobrazení upravené mapy.



#include
#include

int main ( ) {
std::map < int, std::string > moje mapa;
moje mapa [ 1 ] = 'Červené' ;
moje mapa [ 2 ] = 'Modrý' ;
moje mapa [ 3 ] = 'Zelená' ;

myMap.erase ( 2 ) ;

pro ( const auto & pár: moje mapa ) {
std::cout << pár.první << ':' << pár.druhý << std::endl;
}

vrátit se 0 ;
}


V tomto příkladu začneme zahrnutím nezbytných standardních knihoven C++, jako jsou a , abychom umožnili použití vstupních/výstupních operací a kontejneru „std::map“. V rámci funkce „main“ inicializujeme „std::map“ s názvem „myMap“, kde jsou celočíselné klíče přidruženy k odpovídajícím hodnotám řetězce. Do mapy jsou přidány tři páry klíč–hodnota, které představují barvy: „Červená“ pro klíč 1, „Modrá“ pro klíč 2 a „Zelená“ pro klíč 3. Poté použijeme členskou funkci „vymazat“ v „ std::map” k odstranění prvku spojeného s klíčem 2 z naší mapy. V důsledku toho již po této operaci není „modrá“ barva součástí mapy.



Abychom předvedli výsledný stav mapy, používáme smyčku „for“, která prochází každým párem klíč–hodnota v rámci „myMap“. K vytištění každého páru klíč-hodnota do konzole používáme objekt „std::cout“ uvnitř smyčky. Nakonec příkaz „return 0“ uzavírá funkci „hlavní“, která signalizuje úspěšné provedení našeho programu.





Výstup zobrazí zbývající páry klíč–hodnota v „std::map“ po vymazání prvku s klíčem 2 („Modrá“), což vede k výstupu „1: Červená“ a „3: Zelená“.



Příklad 2: Mazání iterátorem

V C++ jsou iterátory objekty, které usnadňují navigaci prvků v kontejneru a nabízejí prostředky pro přístup, úpravu nebo odstranění prvků. Funkci „std::map::erase“ lze také použít s iterátory k odstranění prvků.

Zde je příklad:

#include
#include

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

auto it = fruitMap.find ( 2 ) ;

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

pro ( const auto & pár : fruitMap ) {
std::cout << pár.první << ': ' << pár.druhý << std::endl;
}

vrátit se 0 ;
}


Poskytnutý kód C++ začíná deklarováním „std::map“ s názvem „fruitMap“ pro uložení párů klíč-hodnota, přiřazování celých čísel k odpovídajícím názvům ovoce. Mapu vyplníme záznamy pro čtyři různé druhy ovoce: „Mango“, „Pomeranč“, „PineApple“ a „Hrozny“. Poté pomocí funkce „najít“ získáme iterátor (to), který ukazuje na prvek s hodnotou klíče 2 v rámci „fruitMap“. Poté zkontrolujeme, zda se iterátor nerovná „end()“, abychom zajistili, že prvek se zadaným klíčem v mapě existuje.

V podmíněném bloku vymažeme prvek, na který ukazuje iterátor „it“ pomocí funkce „erase“. Nakonec iterujeme zbývající prvky v upravené „fruitMap“ pomocí smyčky „for“.

Konečný výstup zobrazuje upravený obsah „fruitMap“ po vymazání.

Příklad 3: Vymazání rozsahu

Kontejner „std::map“ v C++ poskytuje pohodlnou metodu pro vymazání prvků v určeném rozsahu. Funkce „erase“ umožňuje odstranit prvky z mapy na základě iterátorů, které představují začátek a konec rozsahu, který má být vymazán.

Nyní se podívejme na koncept mazání rozsahu pomocí „std::map“ na příkladu:

#include
#include

int main ( ) {
std::map < int, std::string > nová mapa;
nová mapa [ 1 ] = 'Kůň' ;
nová mapa [ 2 ] = 'Lev' ;
nová mapa [ 3 ] = 'Tygr' ;
nová mapa [ 4 ] = 'Kočka' ;

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

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

vrátit se 0 ;
}


Program začíná deklarací „std::map“ s názvem „newMap“, která spojuje celočíselné klíče s odpovídajícími řetězcovými hodnotami. Poté mapu naplníme páry klíč–hodnota pomocí operátoru hranatých závorek. Například páry klíč–hodnota (1, „Kůň“), (2, „Lev“), (3, „Tiger“) a (4, „Kočka“) přiřadíme k „nové mapě“.

Další významná operace zahrnuje použití iterátorů k vymazání prvků z mapy. Funkce erase se používá s argumenty „newMap.lower_bound(2)“ a „newMap.upper_bound(3)“. Tím se vymažou prvky s klávesami, které spadají do rozsahu (2, 3). Jinými slovy, odstraní z mapy položky „Lion“ a „Tiger“. Po této operaci mapa obsahuje pouze prvky s klávesami 1 a 4, které odpovídají „Kůň“ a „Kočka“.

Nakonec použijeme rozsahově založenou smyčku „for“ k iteraci zbývajících prvků v mapě a vytištění jejich párů klíč–hodnota do konzole.

Výsledkem je, že výstup zobrazuje následující:

Příklad 4: Mazání na základě predikátu

Vymazání na základě predikátu se týká odstranění prvků z datové struktury, jako je kontejner, na základě zadané podmínky nebo kritérií. „Std::map::erase“ lze také použít s predikátovou funkcí k podmíněnému odstranění prvků. Podívejme se na následující příklad:

#include
#include
#include

int main ( ) {

std::map < int, std::string > moje mapa = {
{ 1 , 'Leden' } ,
{ 2 , 'Únor' } ,
{ 3 , 'Březen' } ,
{ 4 , 'Duben' } ,
{ 5 , 'Smět' }
} ;

automatický predikát = [ ] ( const std::pair < int, std::string >& živel ) {
vrátit se prvek.druhá.délka ( ) < 5 ;
} ;

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

std::cout << ' \n Mapa po vymazání prvků na základě predikátu:' << std::endl;
pro ( const auto & pár: moje mapa ) {
std::cout << pár.první << ': ' << pár.druhý << std::endl;
}

vrátit se 0 ;
}


Program začíná zahrnutím nezbytných hlavičkových souborů. „Std::map“ s názvem „myMap“ je deklarován a inicializován ve funkci „main“. Obsahuje páry klíč–hodnota, které představují názvy měsíců a jejich příslušné číselné hodnoty. Následně je definována „lambda“ funkce (predikát). Tato funkce „lambda“ slouží jako predikát pro algoritmus „std::remove_if“. Ověřuje, zda délka hodnoty řetězce, která je přidružena k prvku mapy, je menší než pět znaků.

Algoritmus „std::remove_if“ je pak použit ve spojení s funkcí „erase“ funkce „std::map“. Tato kombinace odstraní prvky z mapy na základě platnosti predikátu.

Po spuštění programu jsou prvky s klíči menšími než pět odstraněny z původní mapy, což demonstruje vymazání na základě predikátu pomocí „std::map“.

Závěr

Závěrem lze říci, že funkce „std::map::erase“ je všestranný nástroj v C++ k odstranění prvků ze „std::map“. Ať už mažete pomocí klíče, iterátoru, rozsahu nebo na základě predikátu, funkce „std::map::erase“ poskytuje flexibilitu a snadné použití. Zvládnutím této funkce mohou vývojáři C++ efektivně spravovat a manipulovat s daty v kontejnerech „std::map“, čímž je jejich kód silnější a snadněji udržovatelný.