Espacios de nombres
Variantes
Acciones

std::deque<T,Allocator>::erase

De cppreference.com
< cpp‎ | container‎ | deque
 
 
 
 
(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.

Contenido

[editar] 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.

[editar] 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.

[editar] Excepciones

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

[editar] 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.

[editar] 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

[editar] Véase también

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