Título: std::list::erase <list> Publicado por: dijsktra en 4 Julio 2018, 12:07 pm Tengo una duda. De la función
Código la documentación dice: RETURNS : An iterator pointing to the element that followed the last element erased by the function call. This is the container end if the operation erased the last element in the sequence. Mi pregunta es: se deve asumir algún valor "util" en el iterador, como parametro de entrada salida? El siguiente programa invierte el sugsegmento L[i..i+k) del vector corresponidente a la lista L[0..N), con 0 <=i < N , 0 <= k Código
En la linea 14, debo asumir Código
como lo mismo que... Código
Yo creo que NO, pese a que el programa parce funcionar. Aquí algunas salidas: La primera linea leem, N, i, k , la segunda la lista de N elementos y la salida marca la lista con la sublista invertida Código: 6 1 2 Título: Re: std::list::erase <list> Publicado por: ivancea96 en 4 Julio 2018, 20:03 pm Si no pusieras el it2 = ..., it2 dejaría de ser un itrador válido.
Al hacer la asignación, it2 es el siguiente en la lista. Dado que luego se le hace el "--", vuelve para atrás (dado que se eliminó el antiguo it2, es lo mismo que haber hecho "it2--" antes del erase). Asi que una de 2, o haces la asignación del erase, o te guardas un iterador al elemento anterior. |