¿Se permite borrar un elemento señalado por el iterador, y avanzar en la misma iteración de una línea para ir al siguiente elemento?
Sí, es válido.
Justificación:
it++
incrementos it
para que se refiere al siguiente elemento, pero produce una copia de su valor original . Por lo tanto, it
no se refiere al elemento que se elimina cuando se llama erase()
. Y en el caso de std::set
, solo se invalidan los iteradores del elemento borrado. # 1
Puede considerar este ejemplo de código como un código repetitivo para eliminar un elemento al que hace referencia su iterador.
Referencias:
Para std::set
,
# 1C++ estándar 03 23.1.2/8:
Solamente los iteradores y las referencias al borrado los elementos están invalidados