Me preguntaba si algo como esto es seguro ...La eliminación de elementos durante la iteración a través de una lista - de seguridad
// Iterating through a <list>
while (iter != seq.end()) {
if (test) {
iter = seq.erase(iter);
} else {
++iter;
}
Sé que iteración a través de un vector de esta manera invalidaría el iterador, pero sería la Lo mismo ocurre en una lista? Supongo que no, ya que una lista es secuencial a través de punteros en lugar de estar "al lado" uno del otro en la memoria, pero cualquier tranquilidad sería útil.
Nota: Eso también es válido con std :: vector, todos los iteradores existentes en el vector serán invalidados, pero el iterador devuelto por el método 'erase' es un iterador válido. –
Correcto, pero seguro me refiero a que las operaciones continuas en el contenedor estarán bien ya que otros iteradores no se invalidarán (en este caso, además del que se borró). – Anonymous
Si tiene * otros * iteradores, será mejor que se asegure de que no puedan estar apuntando al elemento que acaba de borrarse ... –