std::deque<T,Allocator>::erase
(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.
pos
.[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) |