SoloCodigo

Programación General => C/C++ => Mensaje iniciado por: avis_phoenix en Martes 30 de Septiembre de 2008, 21:39

Título: STL Vector no funciona
Publicado por: avis_phoenix en Martes 30 de Septiembre de 2008, 21:39
Debo ser yo seguramente el que no esta usando correctamente el vector, pero el problema es que cuando quiero agregarle un elemento a un vector que es global en la clase donde estoy(private), me marca el siguiente error (con try y caught):

Exception caught: vector::_M_range_check

Pero ya he estado buscando por donde y no encuentro el error, el programa que estoy haciendo lee un archivo xml y crea un automata finito no determinista (o determinista) y ejecuta las transiciones dadas.

cuando empiezo a leer el archivo leo los nombres de las letras para crear el alfabeto antes me agarraba bien con un ejemplo que tengo muy sencillo con una sola letra en el alfabeto, pero cuando puse otro me marcaba error al alojar la memoria (en new_allocator.h) y justo esto es en la linea 300:

alphabet.push_back(t);//<-Error con más de un elemento

anteriormente verifico que t si contenga algo
No sé a que se deba que se corrompe el vector.
luego intentando componerlo (sólo puse comentarios y deje de usar el operador [] y empece a usar at)
 ya estoy harto y cansado llevo mucho tiempo intentando componerlo, he buscado en google y este erro no es común
 :oops:

ayudaaaa  :hitcomp:
 P.D. trabajo en linux, en pantalla todavía no se muestra el resultado del automata, todo se ve en terminal

Aca el codigo:
http://www.geocities.com/platinium2000mx/automalpha.tar.gz
Para poder compilarlo se necesita:
gtkmm2.4
libglademm2.4
libxml++2.6
Título: Re: STL Vector no funciona
Publicado por: avis_phoenix en Miércoles 1 de Octubre de 2008, 21:31
Revisandolo con detalle encontré el error en el heapsort (esta mal hecho)

Como nota de aprendizaje
No confies en escribir couts en lugares del programa y visualizarlos para saber si paso o no por ahi, eso me ha hecho perder mucho tiempo y buscar por lugares equivocados. mejor hay que aprender a usar el debuger (gdb en este caso)