Me gustaría eliminar una clave de un mapa STL. Sin embargo, map.erase()
no hace nada. ¿Cómo voy a hacer estoEliminar una clave de un mapa C++
Respuesta
Depende enteramente de cómo lo llame pero parece que puede estar utilizando la opción first,last
. Si es así, debe tener en cuenta que borrará elementos comenzando en first
, hasta excluyendolast
. 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, asumiendo que la clave está allí por supuesto.
El siguiente código de ejemplo muestra los tres métodos de 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;
}
que da salida:
c => C
d => D
Me siento tan tonto por perder la anulación de 'const key_type &'. ¡Gracias por mencionarlo! –
que tendría que encontrar el iterador primera
map.erase(ITERATOR) ;
Para hacer esto seguro, debe asegurarse de que ITERAT O existe, sin embargo. Ejemplo de par:
#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") ;
}
- 1. C++ :: mapa STL borrar un inexistente clave
- 2. ¿Cómo eliminar varias claves de un mapa?
- 3. ¿Eliminar valores nulos de un mapa?
- 4. Forma correcta de inicializar un mapa y eliminar en C++
- 5. ¿Puedo definir un mapa cuya clave es una estructura?
- 6. Usar el par como clave en un mapa (C++/STL)
- 7. Tipos personalizados como clave para un mapa - C++
- 8. Eliminar una clave de una matriz asociativa
- 9. Eliminar un mapa/forma de Google maps
- 10. eliminar elementos de un mapa sin ordenar Cumpliendo un predicado
- 11. ¿Clave para dos cadenas en un mapa?
- 12. clave Java - mapa de teclas
- 13. Devolver la clave más grande estrictamente menor que la clave dada en un mapa C++
- 14. Eliminar una clave del diccionario por nombre de clave
- 15. Eliminar polígono del mapa
- 16. ¿Cómo eliminar un par específico de un multimapa en C++?
- 17. ¿Cómo eliminar un registro con una restricción de clave externa?
- 18. Cómo utilizar NSString como clave en Objective-C++ std :: mapa
- 19. Eliminar más de una clave de Python dict
- 20. emacs mapa de clave de modo maligno
- 21. ¿Cómo crear una clave dinámica de mapa en javascript?
- 22. Cómo usar dos números como una clave de mapa
- 23. value_type para ver un mapa con punteros como clave
- 24. eliminar ruta con el mapa de google
- 25. Obtener el valor mínimo de un mapa (clave, doble)
- 26. Uso de la lista dentro de un mapa C++
- 27. cómo obtener la clave de juego utilizando el valor en un mapa C++
- 28. ¿Cómo comprobar si una clave en un mapa comienza con un valor de cadena dada
- 29. Forma idiomática de comprobar si una clave en un mapa tiene un valor
- 30. Creando un mapa de lambdas en C++
El borrado hace algo. ¿Cómo lo estás utilizando? ¿Y qué te hace creer que no está haciendo nada? –
map.erase (clave). –
¿Y a mi segunda pregunta? –