std::inplace_vector<T,N>:: erase
|
constexpr
iterator erase
(
const_iterator pos
)
;
|
(1) | (desde C++26) |
|
constexpr
iterator erase
(
const_iterator first, const_iterator last
)
;
|
(2) | (desde C++26) |
Borra los elementos especificados del contenedor.
[
first
,
last
)
.
Los iteradores (incluyendo el
end()
iterator) y las referencias a los elementos en o después del punto de borrado quedan invalidados.
El iterador pos debe ser válido y dereferenciable. Por lo tanto, el iterador end() (que es válido, pero no es dereferenciable) no puede usarse como valor para pos .
El iterador first no necesita ser desreferenciable si first == last : borrar un rango vacío es una operación nula.
Contenidos |
Parámetros
| pos | - | iterador al elemento a eliminar |
| first, last | - | el par de iteradores que define el rango de elementos a eliminar |
| Requisitos de tipo | ||
-
T
no es
MoveAssignable
, el comportamiento es indefinido.
|
||
Valor de retorno
Iterador que sigue al último elemento eliminado.
[
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 igual al número de elementos borrados, el operador de asignación de
T
se llama un número de veces igual al número de elementos en el vector después de los elementos borrados.
Notas
Cuando los elementos del contenedor necesitan ser eliminados basándose en un predicado, en lugar de iterar el contenedor y llamar al unario
erase
, generalmente se utiliza la sobrecarga de rango de iteradores con
std::remove()/std::remove_if()
para minimizar el número de movimientos de los elementos restantes (no eliminados), — este es el idiom erase-remove.
std::erase_if()
reemplaza el idiom erase-remove.
Ejemplo
#include <inplace_vector> #include <print> int main() { std::inplace_vector<int, 10> v{0, 1, 2, 3, 4, 5, 6, 7, 8, 9}; std::println("{}", v); v.erase(v.begin()); std::println("{}", v); v.erase(v.begin() + 2, v.begin() + 5); std::println("{}", v); // Eliminar todos los números pares for (std::inplace_vector<int, 10>::iterator it{v.begin()}; it != v.end();) if (*it % 2 == 0) it = v.erase(it); else ++it; std::println("{}", v); }
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
|
elimina todos los elementos que cumplen criterios específicos
(plantilla de función) |
|
|
limpia el contenido
(función miembro pública) |