tipos sinoptico que partes mental mapa esquema elementos cuadro consiste caracteristicas c++ map

sinoptico - Eliminar una clave de un mapa C++



que es un mapa mental (2)

Depende completamente de cómo lo llame, pero parece que está utilizando la first,last opción. Si es así, debe tener en cuenta que borrará elementos empezando por el first , hasta el last pero excluyendo . Siempre que siga esa regla, la eliminación basada en iteradores debería funcionar bien, ya sea como un elemento único o como un rango.

Si está borrando por clave, entonces también debería funcionar, suponiendo que la clave está ahí, por supuesto.

El siguiente código de muestra muestra los tres métodos en acción:

#include <iostream> #include <map> int main (void) { std::map<char,char> mymap; std::map<char,char>::iterator it; mymap[''a''] = ''A''; mymap[''b''] = ''B''; mymap[''c''] = ''C''; mymap[''d''] = ''D''; mymap[''e''] = ''E''; mymap[''f''] = ''F''; mymap[''g''] = ''G''; mymap[''h''] = ''H''; mymap[''i''] = ''I''; it = mymap.find (''b''); // by iterator (b), leaves acdefghi. mymap.erase (it); it = mymap.find (''e''); // by range (e-i), leaves acd. mymap.erase (it, mymap.end()); mymap.erase (''a''); // by key (a), leaves cd. mymap.erase (''z''); // invalid key (none), leaves cd. for (it = mymap.begin(); it != mymap.end(); it++) std::cout << (*it).first << " => " << (*it).second << ''/n''; return 0; }

qué salidas:

c => C d => D

Me gustaría eliminar una clave de un mapa STL. Sin embargo, map.erase() no hace nada. ¿Cómo voy a hacer esto?


Tendría que encontrar primero el iterador

map.erase( ITERATOR ) ;

Para que esto sea seguro, debe asegurarse de que ITERATOR exista, sin embargo. Por ejemplo:

#include <stdio.h> #include <map> using namespace std ; int main() { map<int,int> m ; m.insert( make_pair( 1,1 ) ) ; map<int,int>::iterator iter = m.find(1) ; if( iter != m.end() ) m.erase( iter ); else puts( "not found" ) ; }