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
Ejecuta este código
#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) |