Namespaces
Variants

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

From cppreference.net

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.

1,2) Elimina el elemento en la posición pos .
3) Elimina los elementos en el rango [ first , last ) , que debe ser un rango válido en * this .
4) Elimina todos los elementos con la clave equivalente a key .
5) Elimina todos los elementos cuya clave sea equivalente al valor x .
Esta sobrecarga participa en la resolución de sobrecarga solo si 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

1-3) Iterador que sigue al último elemento eliminado.
4) Número de elementos eliminados.
5) Número de elementos eliminados.

Excepciones

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

Complejidad

Dada una instancia c de multimap :

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

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)