std::map<Key,T,Compare,Allocator>::erase
De cppreference.com
<tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
<tbody class="t-dcl-rev t-dcl-rev-num ">
</tbody><tbody>
</tbody>
| (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.
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. |
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).Excepciones
1,2) No lanza nada.
3,4) Cualquier excepción lanzada por el objeto
Compare.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)Ejemplo
Ejecuta este código
#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 c
for(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
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.
|
Véase también
| Borra el contenido. (función miembro pública) |