C++ Std::Map::Erase Examples

C Std Map Erase Examples



Entre les moltes operacions disponibles per a “std::map”, la funció “esborrar” destaca com una eina crucial per eliminar els elements basats en les seves claus. Un 'std::map' és un contenidor associatiu organitzat que consta de parells clau-valor. La disposició dels elements dins d'un 'std::map' s'ordena constantment segons les seves claus, facilitant les operacions efectives com ara la cerca, la inserció i la supressió en funció dels valors clau.

Dins de l'àmbit de C++, la funció 'std::map::erase' serveix com a funció membre de la classe 'std::map', que permet l'eliminació d'elements específics del mapa. Es presenta en diverses formes, proporcionant flexibilitat per especificar quins elements esborrar. En aquest article, aprofundirem en els detalls de 'std::map::erase', proporcionant múltiples exemples per il·lustrar la seva versatilitat.







Exemple 1: esborrar per clau

La capacitat d'esborrar els elements mitjançant la clau del 'std::map' és una característica fonamental que ofereix la biblioteca de plantilles estàndard de C++. Aquesta operació s'utilitza habitualment quan necessiteu gestionar i manipular els parells clau-valor d'un programa i proporciona una manera còmoda d'eliminar els elements específics en funció de les seves claus. Crearem un exemple per demostrar com utilitzar el 'std::map' per crear un mapa, esborrar un element per clau i, a continuació, mostrar el mapa modificat.



#inclou
#inclou

int principal ( ) {
std::mapa < int, std::string > el meuMap;
myMap [ 1 ] = 'Vermell' ;
myMap [ 2 ] = 'Blau' ;
myMap [ 3 ] = 'Verd' ;

myMap.erase ( 2 ) ;

per ( const auto & parella: myMap ) {
std::cout << parell.primer << ': ' << parell.segon << std::endl;
}

tornar 0 ;
}


En aquest exemple, comencem per incloure les biblioteques estàndard de C++ necessàries com ara i per permetre l'ús d'operacions d'entrada/sortida i el contenidor 'std::map', respectivament. Dins de la funció 'main', inicialitzem el 'std::map' anomenat 'myMap' on les claus senceres s'associen amb els valors de cadena corresponents. S'afegeixen tres parells clau-valor al mapa que representen els colors: 'Vermell' per a la clau 1, 'Blau' per a la clau 2 i 'Verd' per a la clau 3. A continuació, utilitzem la funció membre 'esborrar' de la ' std::map” per eliminar l'element associat a la clau 2 del nostre mapa. En conseqüència, el color 'blau' ja no forma part del mapa després d'aquesta operació.



Per mostrar l'estat resultant del mapa, utilitzem un bucle 'for' que itera per cada parell clau-valor dins de 'myMap'. Utilitzem l'objecte 'std::cout' dins del bucle per imprimir cada parell clau-valor a la consola. Finalment, la instrucció 'retorn 0' conclou la funció 'principal' que indica l'execució correcta del nostre programa.





La sortida mostra els parells clau-valor restants al 'std::map' després d'esborrar l'element amb la clau 2 ('Blau'), la qual cosa resulta en la sortida '1: Vermell' i '3: Verd'.



Exemple 2: esborrat per iterador

En C++, els iteradors són objectes que faciliten la navegació d'elements dins d'un contenidor, oferint un mitjà per accedir, modificar o eliminar els elements. La funció 'std::map::erase' també es pot utilitzar amb iteradors per eliminar els elements.

Aquí teniu un exemple:

#inclou
#inclou

int principal ( ) {
std::mapa < int, std::string > fruitFolder;
fruitFolder [ 1 ] = 'Mango' ;
fruitFolder [ 2 ] = 'Taronja' ;
fruitFolder [ 3 ] = 'Pinya' ;
fruitFolder [ 4 ] = 'Raims' ;

auto it = fruitMap.find ( 2 ) ;

si ( això ! = fruitMap.end ( ) ) {
fruitMap.erase ( això ) ;
}

per ( const auto & parella: fruitMap ) {
std::cout << parell.primer << ': ' << parell.segon << std::endl;
}

tornar 0 ;
}


El codi C++ proporcionat comença declarant un 'std::map' anomenat 'fruitMap' per emmagatzemar els parells clau-valor, associant els nombres enters amb els noms de fruit corresponents. Omplim el mapa amb entrades per a quatre fruites diferents: 'Mango', 'Taronja', 'Pinya' i 'Raims'. Després d'això, utilitzem la funció 'trobar' per obtenir un iterador (it) que apunta a l'element amb el valor clau de 2 dins del 'fruitMap'. Aleshores, comprovem si l'iterador no és igual a 'end()' per assegurar-nos que l'element amb la clau especificada existeix al mapa.

Al bloc condicional, esborram l'element al qual apunta l'iterador 'it' mitjançant la funció 'esborrar'. Finalment, iterem a través dels elements restants al 'fruitMap' modificat mitjançant un bucle 'for'.

La sortida final mostra el contingut modificat 'fruitMap' després de l'esborrat.

Exemple 3: esborrar un rang

El contenidor 'std::map' en C++ proporciona un mètode convenient per esborrar els elements dins d'un interval especificat. La funció 'esborrar' permet eliminar els elements del mapa basant-se en iteradors que representen l'inici i el final de l'interval que s'ha d'esborrar.

Ara, explorem el concepte d'esborrar un rang mitjançant 'std::map' amb un exemple:

#inclou
#inclou

int principal ( ) {
std::mapa < int, std::string > nouMapa;
nouMapa [ 1 ] = 'Cavall' ;
nouMapa [ 2 ] = 'Lleó' ;
nouMapa [ 3 ] = 'Tigre' ;
nouMapa [ 4 ] = 'Gat' ;

newMap.erase ( newMap.límit_inferior ( 2 ) , newMap.upper_bound ( 3 ) ) ;

per ( const auto & parella: newMap ) {
std::cout << parell.primer << ': ' << parell.segon << std::endl;
}

tornar 0 ;
}


El programa comença declarant un 'std::map' anomenat 'newMap' que associa les claus senceres amb els valors de cadena corresponents. Després d'això, omplim el mapa amb parells clau-valor mitjançant l'operador de claudàtors. Per exemple, assignem els parells clau-valor de (1, 'Cavall'), (2, 'Lleó'), (3, 'Tigre') i (4, 'Gat') a 'newMap'.

La següent operació significativa consisteix a utilitzar els iteradors per esborrar els elements del mapa. La funció d'esborrar s'utilitza amb els arguments 'newMap.lower_bound(2)' i 'newMap.upper_bound(3)'. Això esborra els elements amb tecles que cauen en el rang (2, 3). En altres paraules, elimina les entrades 'Lleó' i 'Tigre' del mapa. Després d'aquesta operació, el mapa conté només els elements amb les claus 1 i 4, corresponents a 'Cavall' i 'Gat'.

Finalment, utilitzem un bucle 'for' basat en intervals per iterar a través dels elements restants del mapa i imprimir els seus parells clau-valor a la consola.

Com a resultat, la sortida mostra el següent:

Exemple 4: esborrar basat en un predicat

L'esborrat basat en un predicat es refereix a eliminar els elements d'una estructura de dades, com ara un contenidor, en funció d'una condició o criteris especificats. El 'std::map::erase' també es pot utilitzar amb una funció de predicat per eliminar els elements condicionalment. Considerem l'exemple següent:

#inclou
#inclou
#inclou

int principal ( ) {

std::mapa < int, std::string > myMap = {
{ 1 , 'gener' } ,
{ 2 , 'febrer' } ,
{ 3 , 'març' } ,
{ 4 , 'abril' } ,
{ 5 , 'Maig' }
} ;

predicat automàtic = [ ] ( const std::pair < int, std::string >& element ) {
tornar element.segon.longitud ( ) < 5 ;
} ;

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

std::cout << ' \n Mapa després d'esborrar elements basats en el predicat:' << std::endl;
per ( const auto & parella: myMap ) {
std::cout << parell.primer << ': ' << parell.segon << std::endl;
}

tornar 0 ;
}


El programa comença per incloure els fitxers de capçalera necessaris. Un 'std::map' anomenat 'myMap' es declara i s'inicializa a la funció 'main'. Conté els parells clau-valor que representen els noms dels mesos i els seus respectius valors numèrics. Posteriorment, es defineix una funció 'lambda' (predicat). Aquesta funció 'lambda' serveix com a predicat per a l'algorisme 'std::remove_if'. Verifica si la longitud del valor de cadena que s'associa amb un element del mapa és inferior a cinc caràcters.

Aleshores s'utilitza l'algorisme 'std::remove_if' juntament amb la funció 'esborrar' del 'std::map'. Aquesta combinació elimina els elements del mapa en funció de la validesa del predicat.

Després d'executar el programa, els elements amb claus inferiors a cinc s'eliminen del mapa original, demostrant l'esborrat basat en un predicat mitjançant 'std::map'.

Conclusió

En conclusió, la funció 'std::map::erase' és una eina versàtil en C++ per eliminar els elements de 'std::map'. Tant si esborra per clau, iterador, rang o basat en un predicat, la funció 'std::map::erase' proporciona flexibilitat i facilitat d'ús. Dominant aquesta funció, els desenvolupadors de C++ poden gestionar i manipular de manera eficient les dades dins dels contenidors 'std::map', fent que el seu codi sigui més fort i fàcil de mantenir.