Espacios de nombres
Variantes

std::list::erase

De cppreference.com
 
 
 
 
iterator erase( iterator pos );
(1) (hasta C++11)
iterator erase( const_iterator pos );
(desde C++11)
iterator erase( iterator first, iterator last );
(2) (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 las referencias y los iteradores a los elementos eliminados. No se afectan otras referencias e iteradores.

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

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

(none)

Complejidad

1) Constante.
2) Lineal en la distancia entre first y last.

Ejemplo

#include <list>
#include <iostream>
#include <iterator>

int main( )
{
    std::list<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';

    std::list<int>::iterator range_begin = c.begin();
    std::list<int>::iterator range_end = c.begin();
    std::advance(range_begin,2);
    std::advance(range_end,5);

    c.erase(range_begin, range_end);

    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]
Morty Proxy This is a proxified and sanitized view of the page, visit original site.