elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Únete al Grupo Steam elhacker.NET


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Duda iterator // Vector iterator not decrementable
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Duda iterator // Vector iterator not decrementable  (Leído 2,528 veces)
cazagavilan

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Duda iterator // Vector iterator not decrementable
« en: 13 Agosto 2013, 23:22 pm »

Buenas !


Código
  1. void NucleoMotor::LimpiarVector()
  2. {
  3.  // Elimina los elementos del vector
  4.  vector<cSprite*>::iterator ivSprite;
  5.  for (ivSprite = m_vcSprites.begin();
  6.        ivSprite != m_vcSprites.end();
  7.        ivSprite++)
  8.  {
  9.  
  10.    delete (*ivSprite);
  11.    m_vcSprites.erase(ivSprite);
  12.    ivSprite--;
  13.  }
  14. }

El error es en la ejecución del programa.

Gracias!


En línea

Stakewinner00


Desconectado Desconectado

Mensajes: 1.426



Ver Perfil WWW
Re: Duda iterator // Vector iterator not decrementable
« Respuesta #1 en: 13 Agosto 2013, 23:34 pm »

No entiendo demasiado lo k hace el código pero si no me equivoco en la declaración del for estas haciendo que la variable ivSprite aumente con ivSprite++ pero dentro del for estas haciendo que disminuya con ivSprite-- y si no me equivoco el programa tendra una variable que pasa de x a y a x a y a x y así indefinidamente.


En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Duda iterator // Vector iterator not decrementable
« Respuesta #2 en: 13 Agosto 2013, 23:35 pm »

Este es el uso correcto de erase:

Código
  1. ivSprite = m_vcSprites.erase(ivSprite);

Al borrar, devuelve el nuevo iterador.
En línea

Por favor, no me manden MP con dudas. Usen el foro, gracias.

¡Visita mi programa estrella!

Rar File Missing: Esteganografía en un Rar
cazagavilan

Desconectado Desconectado

Mensajes: 82


Ver Perfil
Re: Duda iterator // Vector iterator not decrementable
« Respuesta #3 en: 14 Agosto 2013, 09:55 am »

Solucionado!

Código
  1. void NucleoMotor::LimpiarVector()
  2. {
  3.  
  4.   vector<cSprite*>::iterator it = m_vcSprites.begin();
  5. while(it != m_vcSprites.end()) {
  6.         if(*it > 0)
  7. it = m_vcSprites.erase(it);
  8.         else
  9.                 it++;
  10. }
  11. }

Gracias!
En línea

frankener1986

Desconectado Desconectado

Mensajes: 136


Reversing the world


Ver Perfil
Re: Duda iterator // Vector iterator not decrementable
« Respuesta #4 en: 14 Agosto 2013, 13:17 pm »

Eso ocurre porque intentas acceder al siguiente nodo después de borrar el actual. Si no me equivoco, podrías hacer erase(++it). Además, no existe en STL un clear() que hace esa función?
En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
como relaciono una calse iterator con una clase lista...
Programación C/C++
.:BlackCoder:. 0 2,252 Último mensaje 19 Noviembre 2011, 02:53 am
por .:BlackCoder:.
[Solucionado] Redefinir método iterator
Java
mavicadi 6 4,034 Último mensaje 12 Mayo 2013, 01:47 am
por mavicadi
List iterator not decrementable
Programación C/C++
kaostias 0 1,382 Último mensaje 2 Noviembre 2013, 11:54 am
por kaostias
[Ayuda]Iterator con saltos
Java
d!lan 0 1,329 Último mensaje 8 Abril 2014, 00:10 am
por d!lan
JAVA - ArrayList - Iterator - Error en consola
Java
Santi73Arg 3 4,305 Último mensaje 23 Noviembre 2017, 05:30 am
por rub'n
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines