• Domingo 17 de Noviembre de 2024, 21:39

Autor Tema:  Vectores  (Leído 1523 veces)

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Vectores
« en: Martes 3 de Febrero de 2009, 04:11 »
0
Hola, estoy haciendo un trabajillo en C++ y me he encontrado con un problema a la hora de crear un vector.

Empecé tomando como modelo algo que ya tenía echo de hacía tiempo y en el tenía un vector, tal que así:

Código: C++
  1. string VEC_STRING[] = { "AAA", "SSS" };
  2.  

El motivo de hacerlo de esta manera, era porque durante la implementación (pero no la ejecución), el vector era bastante grande e iba cambiando de tamaño constantemente. Funcionaba perfectamente, sin embargo ahora a la hora de compilar me genera el siguente error:

Código: Text
  1. Student.o:(.bss+0x0): multiple definition of `VEC_STRING'
  2. project.o:(.bss+0x0): first defined here
  3. collect2: ld devolvió el estado de salida 1
  4. make: *** [project] Error 1
  5.  

El vector se encuentra en un archivo .h y creo que por ahí van los tiros, pero no logro dar con el problema.

Gracias

m0skit0

  • Miembro de PLATA
  • *****
  • Mensajes: 2337
  • Nacionalidad: ma
    • Ver Perfil
    • http://fr33kk0mpu73r.blogspot.com/
Re: Vectores
« Respuesta #1 en: Martes 3 de Febrero de 2009, 13:13 »
0
Cita de: "lydia_watanabe"
multiple definition of `VEC_STRING'
Me parece que lo tienes declarado más de una vez. Fíjate en que no llames a varias variables VEC_STRING tanto en el fichero de cabecera como en el de código.

Por cierto, para memoria dinámica (variables que cambian de tamaño) tienes la función new, o la función C malloc().

Salud

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Vectores
« Respuesta #2 en: Martes 3 de Febrero de 2009, 14:57 »
0
Cita de: "m0skit0"
Me parece que lo tienes declarado más de una vez. Fíjate en que no llames a varias variables VEC_STRING tanto en el fichero de cabecera como en el de código.

Fue lo primero que comprobé, pero no, incluso llegué a cambiarle el nombre por algo que jamás habría usado y nada, el error es siempre el mismo.

Cita de: "m0skit0"
Por cierto, para memoria dinámica (variables que cambian de tamaño) tienes la función new, o la función C malloc().

Lo cierto es que el vector es constante, una vez declarado no cambia en ningún momento.

lydia_watanabe

  • Miembro activo
  • **
  • Mensajes: 27
    • Ver Perfil
Re: Vectores
« Respuesta #3 en: Martes 3 de Febrero de 2009, 19:46 »
0
Por cieto, teniendo el vector inicializado y sin saber exactamente cuantos elementos tengo ¿hay alguna función que me lo diga?

Por otro lado, usando la STL ¿hay alguna manera sencilla de inicializar el vector tal y como lo he hecho con VEC_STRING?

Gracias.

betopin

  • Miembro activo
  • **
  • Mensajes: 93
  • Nacionalidad: co
    • Ver Perfil
    • http://www.programasenc.blogspot.com
Re: Vectores
« Respuesta #4 en: Martes 3 de Febrero de 2009, 20:05 »
0
Puedes saber el tamaño del arreglo con el comando sizeof()....el te da la cantidad de bytes con los que cuesta el arreglo...si quieres saber el numero exacto de elementos puede hacer algo asi como: sizeof ARREGLO/sizeof (TIPO DE DATO)
.....donde TIPO DE DATO es int, char...etc

Saludos

Cita de: "lydia_watanabe"
Por cieto, teniendo el vector inicializado y sin saber exactamente cuantos elementos tengo ¿hay alguna función que me lo diga?

Por otro lado, usando la STL ¿hay alguna manera sencilla de inicializar el vector tal y como lo he hecho con VEC_STRING?

Gracias.