std::multimap<Key,T,Compare,Allocator>:: erase
|
iterator erase
(
iterator pos
)
;
|
(1) | (constexpr desde C++26) |
|
iterator erase
(
const_iterator pos
)
;
|
(2) |
(desde C++11)
(constexpr desde C++26) |
| (3) | ||
|
iterator erase
(
iterator first, iterator last
)
;
|
(hasta C++11) | |
|
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(desde C++11)
(constexpr desde C++26) |
|
|
size_type erase
(
const
Key
&
key
)
;
|
(4) | (constexpr desde C++26) |
|
template
<
class
K
>
size_type erase ( K && x ) ; |
(5) |
(desde C++23)
(constexpr desde C++26) |
Elimina los elementos especificados del contenedor. El orden de los elementos equivalentes restantes se conserva.
[
first
,
last
)
, que debe ser un rango válido en
*
this
.
Compare
es
transparente
, y ni
iterator
ni
const_iterator
son convertibles implícitamente desde
K
. Permite llamar a esta función sin construir una instancia de
Key
.
Las referencias e iteradores a los elementos eliminados quedan invalidados. Otras referencias e iteradores no se ven afectados.
El iterador pos debe ser dereferenciable. Por lo tanto, el iterador end() (que es válido, pero no es dereferenciable) no puede usarse como valor para pos .
Contenidos |
Parámetros
| pos | - | iterador al elemento a eliminar |
| first, last | - | el par de iteradores que define el rango de elementos a eliminar |
| key | - | valor clave de los elementos a eliminar |
| x | - | un valor de cualquier tipo que puede compararse transparentemente con una clave que denota los elementos a eliminar |
Valor de retorno
Excepciones
Compare
.
Complejidad
Dada una instancia
c
de
multimap
:
Notas
| Macro de prueba de características | Valor | Std | Característica |
|---|---|---|---|
__cpp_lib_associative_heterogeneous_erasure
|
202110L
|
(C++23) | Borrado heterogéneo en contenedores asociativos y contenedores asociativos no ordenados ; sobrecarga ( 5 ) |
Ejemplo
#include <map> #include <iostream> int main() { std::multimap<int, std::string> c = { {1, "one"}, {2, "two"}, {3, "three"}, {4, "four"}, {5, "five"}, {6, "six"} }; // eliminar todos los números impares 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 << ' '; std::cout << '\n'; }
Salida:
two four six
Informes de defectos
Los siguientes informes de defectos que modifican el comportamiento se aplicaron retroactivamente a los estándares de C++ publicados anteriormente.
| DR | Aplicado a | Comportamiento publicado |
Comportamiento correcto
|
|---|---|---|---|
| LWG 130 | C++98 |
el tipo de retorno de las sobrecargas
(
1
)
y
(
3
)
era
void
(no es
consistente con el requisito
erase()
en contenedores de secuencia)
|
corregido a
iterator
|
| LWG 371 | C++98 |
el orden de elementos equivalentes que no
fueron eliminados no estaba garantizado que se preservara |
se requiere que se preserve |
| LWG 2059 | C++11 | reemplazar la sobrecarga ( 1 ) con la sobrecarga ( 2 ) introdujo una nueva ambigüedad | se añadió nuevamente la sobrecarga ( 1 ) |
Véase también
|
borra el contenido
(función miembro pública) |