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

 

 


Tema destacado: Estamos en la red social de Mastodon


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación C/C++ (Moderadores: Eternal Idol, Littlehorse, K-YreX)
| | |-+  Vectores vs Listas
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] 2 Ir Abajo Respuesta Imprimir
Autor Tema: Vectores vs Listas  (Leído 5,480 veces)
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Vectores vs Listas
« en: 1 Junio 2013, 13:39 pm »

Tenemos el siguiente caso, necesitamos tener almacenados los disparos de una nave. Cada cierto tiempo comprobaremos los disparos y si alguno ha acertado/salido del mapa los eliminaremos.

¿Que contenedor deberíamos usar para obtener el máximo rendimiento? ¿Vectores o listas?


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
BlackM4ster


Desconectado Desconectado

Mensajes: 499


Error, el teclado no funciona. Pulse F1 para continuar


Ver Perfil WWW
Re: Vectores vs Listas
« Respuesta #1 en: 1 Junio 2013, 14:03 pm »

mm yo lo haría con una clase disparo
un struc con las variables de posicion -> disparo[50]
y luego un for que los recorra

Yo siempre lo hago así


En línea

- Pásate por mi web -
https://codeisc.com
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Vectores vs Listas
« Respuesta #2 en: 1 Junio 2013, 14:09 pm »

mm yo lo haría con una clase disparo
un struc con las variables de posicion -> disparo[50]
y luego un for que los recorra

Yo siempre lo hago así
El problema esque no conoces cuantos disparos hay en la pantalla, es un número que varía. Además no es muy óptimo porque no puedes borrar los disparos que has realizado (por lo cual, estarías comprobando disparos vacíos en el for).

Por eso digo de usar la clase vector/lista. Pero no sabría escoger cual es la más idonea (hasta ahora he usado lista).
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
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Vectores vs Listas
« Respuesta #3 en: 1 Junio 2013, 14:35 pm »

Yo usaría una cola circular, es sencillo y muy práctico.

Código:
disparos[MAX];
int in=0, out=0;

Cuando la nave dispara:
Código:
disparos[in++]=loquesea;

Cuando quieres comprobar los disparos que una nave tiene pendiente:
Código:
while (out != in) ComprobarDisparo(disparos[out++]);

Acuérdate que entonces tendrías que comprobar que los indicies no han sobrepasado la dimensión del vector. Lo puedes hacer con un if siempre que leas o escribas algo en 'disparos', o sino puedes jugar con el tamaño de las variables tipo:

Código:
disparos[256];
unsigned char in=0, out=0;

De tal manera que los índices al llegar al 255 y sumarle uno, directamente pasan a 0 y empezarías a sobreescribir disparos antiguos que en teoría ya habrás procesado.

Espero que te sirva, un saludo!
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Vectores vs Listas
« Respuesta #4 en: 1 Junio 2013, 14:44 pm »

Parece eficiente y práctico, pero:

Citar
De tal manera que los índices al llegar al 255 y sumarle uno, directamente pasan a 0 y empezarías a sobreescribir disparos antiguos que en teoría ya habrás procesado.
Quieres decir que la variable in pasaría a 0. Pero entonces te cargas el bucle de comprobación  :silbar:
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
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Vectores vs Listas
« Respuesta #5 en: 1 Junio 2013, 14:50 pm »

Por que te lo cargas?

Código:
while (in != out) ComprobarDisparo(disparos[out++]);

Si 'in' ha pasado por ejemplo a 3, y 'out' está en 255, al sumarle uno a 'out' este pasa a 0. Como los índices siguen siendo distintos, se seguirá en el bucle hasta que los índices sean iguales.
En línea

amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Vectores vs Listas
« Respuesta #6 en: 1 Junio 2013, 15:32 pm »

Por que te lo cargas?

Código:
while (in != out) ComprobarDisparo(disparos[out++]);

Si 'in' ha pasado por ejemplo a 3, y 'out' está en 255, al sumarle uno a 'out' este pasa a 0. Como los índices siguen siendo distintos, se seguirá en el bucle hasta que los índices sean iguales.
Te lo explico. Supon que tienes cinco disparos, in valdría 5, por lo que el bucle hará 5 comprobaciones. Cuando se vuelva a ejecutar el bucle, out debe reinicializarse a 0, de lo contrario dejarías de comprobar esos 5 cinco disparos.

Partiendo de eso, cuando in pase de 255 a 0, dejará sin comprobar los disparos 255,254,253... De hecho el bucle no se llegará ni a ejecutar (in = out).
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
xiruko


Desconectado Desconectado

Mensajes: 438


Ver Perfil
Re: Vectores vs Listas
« Respuesta #7 en: 1 Junio 2013, 15:50 pm »

Vale ahora lo he entendido, no solo hay que procesar los disparos sino que si no han impactado o salido del mapa no se deben borrar y por lo tanto se deben volver a comprobar más tarde.

Me he levantado hace poco y estoy algo espeso... xD

A ver si luego doy con alguna idea y te comento.

Un saludo!
En línea

rir3760


Desconectado Desconectado

Mensajes: 1.639


Ver Perfil
Re: Vectores vs Listas
« Respuesta #8 en: 1 Junio 2013, 16:45 pm »

necesitamos tener almacenados los disparos de una nave. Cada cierto tiempo comprobaremos los disparos y si alguno ha acertado/salido del mapa los eliminaremos.

¿Que contenedor deberíamos usar para obtener el máximo rendimiento? ¿Vectores o listas?
Los vectores te permiten un acceso constante y las listas una inserción/eliminación tan eficiente como sea posible. Elegir uno u otro depende de la operación mas frecuente (búsqueda, inserción en orden, eliminación, etc.).

Un saludo
En línea

C retains the basic philosophy that programmers know what they are doing; it only requires that they state their intentions explicitly.
--
Kernighan & Ritchie, The C programming language
amchacon


Desconectado Desconectado

Mensajes: 1.211



Ver Perfil
Re: Vectores vs Listas
« Respuesta #9 en: 1 Junio 2013, 20:40 pm »

Los vectores te permiten un acceso constante y las listas una inserción/eliminación tan eficiente como sea posible. Elegir uno u otro depende de la operación mas frecuente (búsqueda, inserción en orden, eliminación, etc.).
Eso es lo que te pregunto (en este caso que escogerías?)
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
Páginas: [1] 2 Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Uso de Listas: Subprograma que lea 2 listas y forme una.
Dudas Generales
hbenitez 2 3,356 Último mensaje 8 Agosto 2010, 20:11 pm
por hbenitez
Ayuda Acerca De Listas y Listas Circulares (Revienta Memoria :S)
Programación C/C++
Gerik 0 5,237 Último mensaje 12 Septiembre 2010, 01:49 am
por Gerik
vectores
Programación C/C++
tartagal 1 2,921 Último mensaje 7 Diciembre 2010, 17:16 pm
por Littlehorse
Vectores c++
Programación C/C++
Stakewinner00 8 4,394 Último mensaje 14 Julio 2012, 20:55 pm
por DickGumshoe
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines