close
Espacios de nombres
Variantes

std::deque<T,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)
iterator erase( iterator pos );
(hasta C++11)
iterator erase( const_iterator pos );
(desde C++11)
(2)
iterator erase( iterator first, iterator last );
(hasta C++11)
iterator erase( const_iterator first, const_iterator last );
(desde C++11)

Elimina los elementos especificados del contenedor.

1) Elimina el elemento en pos.
2) Elimina los elementos en el rango [first; last).

Se invalidan todos los iteradores, a menos que los elementos eliminados estén al final o al inicio del contenedor, en cuyo caso solamente se invalidan los iteradores y referencias a los elementos eliminados.

No se especifica cuándo se invalida el iterador después del final. (hasta C++11)
El iterador después del final también se invalida a menos que los elementos eliminados estén al inicio del contenedor y el último elemento no se elimine. (desde C++11)

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 si first==last: eliminar un rango vacío es una no-operación.

Parámetros

pos - Iterador al elemento a eliminar
first, last - Rango de elementos a eliminar
Requisitos de tipo
-
T debe satisfacer los requisitos de MoveAssignable.

Valor de retorno

El iterador que sigue al último elemento eliminado.

Si pos se refiere al último elemento, entonces se devuelve el iterador end().

Si last==end() antes de la eliminación, entonces se devuelve el iterador actualizado end().

Si [first, last) es un rango vacío, entonces se devuelve last.

Excepciones

No lanza a menos que se lance una excepción por el operador de asignación de T.

Complejidad

Lineal: el número de llamadas al destructor de T es el mismo que el número de elementos eliminados, el número de llamadas al operador de asignación de T no es mayor que el menor del número de elementos antes de los elementos eliminados y el número de elementos después de los elementos eliminados.

Ejemplo

#include <deque>
#include <iostream>


int main( )
{
    std::deque<int> c{0, 1, 2, 3, 4, 5, 6, 7, 8, 9};
    for (auto &i : c) {
        std::cout << i << " ";
    }
    std::cout << '\n';

    c.erase(c.begin());

    for (auto &i : c) {
        std::cout << i << " ";
    }
    std::cout << '\n';

    c.erase(c.begin()+2, c.begin()+5);

    for (auto &i : c) {
        std::cout << i << " ";
    }
    std::cout << '\n';

    // Elimina todos los números pares (C++11 y posterior)
    for (auto it = c.begin(); it != c.end(); ) {
        if (*it % 2 == 0) {
            it = c.erase(it);
        } else {
            ++it;
        }
    }

    for (auto &i : c) {
        std::cout << i << " ";
    }
    std::cout << '\n';
}

Salida:

0 1 2 3 4 5 6 7 8 9
1 2 3 4 5 6 7 8 9
1 2 6 7 8 9
1 7 9

Véase también

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