Espacios de nombres
Variantes

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

De cppreference.com

[edit template]
 
 
 
 
<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)
(hasta C++20)
constexpr iterator erase( const_iterator pos );
(desde C++20)
(2)
iterator erase( iterator first, iterator last );
(hasta C++11)
iterator erase( const_iterator first, const_iterator last );
(desde C++11)
(hasta C++20)
constexpr iterator erase( const_iterator first, const_iterator last );
(desde C++20)

Elimina los elementos especificados del contenedor.

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

Invalida los iteradores y referencias en el, o después del, punto de eliminación, incluyendo el iterador end().

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 operador de asignación de T se llama el número de veces igual al número de elementos en el vector después de los elementos eliminados.

Ejemplo

#include <vector>
#include <iostream>


int main( )
{
    std::vector<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]