• Viernes 1 de Noviembre de 2024, 12:25

Autor Tema:  Limite De Vectores Dinamicos  (Leído 2100 veces)

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Limite De Vectores Dinamicos
« en: Lunes 22 de Enero de 2007, 20:37 »
0
Hola a todos.

Verán, cuando se migra de un lenguaje como VB a C uno hecha de menos ciertas funciones como Lbound y Ubound que devuelven el elemento inferior y superior del vector.

Me pregunto que cómo puedo hacer una función que haga esto.

De esa forma, trabajar con vectores dinámicos seria más cómodo porque podria
disponer de su longitud en cualquier momento y hacer un realloc.

Por ahora lo que hago, es "llevar la cuenta" de los elementos que introduzco en él
en una variable global y tener cuidado de que no se pase.

O en algunos casos,  almaceno Sizeof vector /Sizeof(tipo de dato) en una variable
y lo redimensiono a ese dato.

Puede decirme alguien cómo puedo implementar esta función u otra forma de hacerlo ?

Gracias

Max_D

  • Miembro MUY activo
  • ***
  • Mensajes: 117
    • Ver Perfil
    • http://sitioteca.spaces.live.com/
Re: Limite De Vectores Dinamicos
« Respuesta #1 en: Lunes 22 de Enero de 2007, 21:42 »
0
Al realizar la reserva de memoria le tienes que decir que tamaño quieres reservar, te refieres a eso?

Yo no se VB pero si buscas "que te hagan el trabajo", investiga sobre la STL.  ;)

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Limite De Vectores Dinamicos
« Respuesta #2 en: Lunes 22 de Enero de 2007, 22:09 »
0
No busco que se me de el code, aunque si alguien lo pone no lo rechazaré.

Me refiero a cómo implementar una función que me de el límite superior de un vector dinámico para poder dimensionarlo y convertirlo a estático.

El cómo podria desarrollarla.

A ver si con un ejemplo se entiende.


Supongamos que tengo un vector N dinámico.

Le introduzco 3 datos y lo que me gustaria implementar, es una función que pasándole el vector me diga que tiene 3 elementos y asi poder hacer realloc.

Código: Text
  1.  
  2.  
  3. int N[];
  4.  
  5. N[0]=1
  6. N[1]=2
  7. N[2]=3
  8.  
  9.  
  10.  

La función que quiero implementar, haría esto x= Ubound(N); dando como resultado x=3

Los métodos que uso actualmente para saber cuántos datos contiene un vector dinámico es una variable global o Sizeof Vector /Sizeof(tipo de dato)

Algún consejo o comentario ?

Salu2

Mararía

  • Miembro activo
  • **
  • Mensajes: 53
    • Ver Perfil
Re: Limite De Vectores Dinamicos
« Respuesta #3 en: Martes 23 de Enero de 2007, 11:22 »
0
Y para qué quieres implementar una función que hace exactamente lo mismo que el SIzeof()?

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Limite De Vectores Dinamicos
« Respuesta #4 en: Martes 23 de Enero de 2007, 12:00 »
0
Cita de: "krnl64"
Verán, cuando se migra de un lenguaje como VB a C uno hecha de menos ciertas funciones como Lbound y Ubound que devuelven el elemento inferior y superior del vector.
La diferencia es que en VB un array esta "protegido" y se le realiza comprobacion de limites al acceder al mismo, en C y C++ un array no es mas que memoria contigua.

Esto seria un bosquejo de un ejemplo para no acceder directamente a un array:

Código: Text
  1.  
  2. typedef struct _dinArray
  3. {
  4.   int eSize;
  5.   int eCount;
  6.   void *eBuff;
  7. }dinArray;
  8.  
  9. dinArray *createArray(int aSize);
  10. void setElement(int eData);
  11. int getElement(int ePos);
  12. void destroyArray(dinArray *anArray);
  13.  
  14.  

En C++ usando encapsulacion, sobrecarga de operadores o templates se logran soluciones mucho mas limpias.

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.

krnl64

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Limite De Vectores Dinamicos
« Respuesta #5 en: Martes 23 de Enero de 2007, 15:01 »
0
Gracias por la sugerencia.

Salu2

Eternal Idol

  • Moderador
  • ******
  • Mensajes: 4696
  • Nacionalidad: ar
    • Ver Perfil
Re: Limite De Vectores Dinamicos
« Respuesta #6 en: Martes 23 de Enero de 2007, 15:06 »
0
Cita de: "krnl64"
Gracias por la sugerencia.

Salu2
De nada pero yo no usaria algo asi en C, es demasiado "engorroso". Despues de todo da lo mismo donde guardes el tamaño, siempre lo vas a reservar en tiempo de ejecucion ...

Nacional y Popular En mi país la bandera de Eva es inmortal.


Queremos una Argentina socialmente justa, económicamente libre y  políticamente soberana.
¡Perón cumple, Evita dignifica!


La mano invisible del mercado me robo la billetera.