Espacios de nombres
Variantes
Acciones

std::map<Key,T,Compare,Allocator>::erase

De cppreference.com
< cpp‎ | container‎ | map
 
 
 
 
(1)
void erase( iterator pos );
(hasta C++11)
iterator erase( iterator pos );
(desde C++11)
iterator erase( const_iterator pos );
(desde C++11)
(2)
void erase( iterator first, iterator last );
(hasta C++11)
iterator erase( const_iterator first, const_iterator last );
(desde C++11)
size_type erase(const Key& key );
(3)
template<class K >
size_type erase( K&& x );
(4) (desde C++23)

Borra del contenedor los elementos especificados.

1) Borra el elemento en la posición pos.
2) Borra los elementos en el rango [first; last), que debe ser un rango válido en *this.
3) Borra el elemento (si uno existe) con la clave equivalente a key.
4) Borra el elemento (si uno existe) con la clave que se compara equivalente al valor x. Esta sobrecarga solo participa en la resolución de sobrecargas si el id-calificado Compare::is_transparent es válido y denota un tipo, y ni iterator ni const_iterator es implícitamente convertible de K. Permite llamar a esta función sin construir una instancia de Key.

Se invalidan todas las referencias y los iteradores a los elementos eliminados. No se afectan otras referencias e iteradores.

El iterador pos debe ser válido y desreferenciable. Es por esto que el iterador end() (que es válido, pero no es desreferenciable) no puede usarse como un valor para pos.

Contenido

[editar]Parámetros

pos - Iterador al elemento a borrar.
first, last - Rango de elementos a borrar.
key - Valor de la clave de los elementos a borrar.
x - Un valor de cualquier tipo que se pueda comparar de forma transparente con una clave que indique los elementos a borrar.

[editar]Valor de retorno

1-2)(Ninguno)(hasta C++11)Iterador que sigue al último elemento borrado.(desde C++11)
3,4) Número de elementos borrados (0 o 1).

[editar]Excepciones

1,2) No lanza nada.
3,4) Cualquier excepción lanzada por el objeto Compare.

[editar]Complejidad

Dada una instancia c de tipo map:

1) Constante amortizada.
2)log(c.size())+std::distance(first, last)
3)log(c.size())+ c.count(key)
4)log(c.size())+ c.count(x)

[editar]Ejemplo

#include <...>#include <iostream>int main(){std::map<int, std::string> c ={{1, "uno"}, {2, "dos"}, {3, "tres"}, {4, "cuatro"}, {5, "cinco"}, {6, "seis"}};   // borrar todos los números nones de cfor(auto it = c.begin(); it != c.end();){if(it->first %2!=0) it = c.erase(it);else++it;}   for(auto& p : c){std::cout<< p.second<<' ';}}

Salida:

dos cuatro seis

[editar]Informes de defectos

Los siguientes informes de defectos de cambio de comportamiento se aplicaron de manera retroactiva a los estándares de C++ publicados anteriormente.

ID Aplicado a Comportamiento según lo publicado Comportamiento correcto
LWG 2059 C++11 La sobrecarga para un const_iterator introdujo una nueva ambigüedad. Se agregó la sobrecarga para iterator.

[editar]Véase también

Borra el contenido.
(función miembro pública)[editar]
close