IMPLÉMENTATION D'UNE STRUCTURE DE DONNÉE DYNAMIQUE ET GÉNÉRIQUE DE TYPE "VECTOR"

acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 - 28 févr. 2007 à 00:22
cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 - 28 févr. 2007 à 14:10
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.

https://codes-sources.commentcamarche.net/source/41666-implementation-d-une-structure-de-donnee-dynamique-et-generique-de-type-vector-en-c

cs_vicenzo Messages postés 178 Date d'inscription mardi 16 août 2005 Statut Membre Dernière intervention 25 août 2010 1
28 févr. 2007 à 14:10
pour le tri, pourquoi pas faire un qsort tout simple...qui sera autrement plus performant..

qsort(name->elements, name->nbElements, sizeof(type), funcCompare);

Sinon, l'utilisation de telles macros génère beaucoup trop de code, et détourne l'utilité des macro. Les macro sont là pour aider à coder, pas pour essayer de faire ce que le langage ne sait pas ou ne peut faire. Il vaut mieux faire un préprocesseur sans ce cas...

De plus, il est possible d'avoir une approche générique sans passer par des macros...
spiky31 Messages postés 106 Date d'inscription mardi 11 novembre 2003 Statut Membre Dernière intervention 11 février 2008
28 févr. 2007 à 00:45
Salut

Pour le realloc dans la version non windows j'y ai pensé et je viens de réaliser que se serait facile a faire donc je le modifirais.
Pour le do{...] while (0) je sais pas pourquoi je l'ai pas mis mais je le rajouterais si sa peut te fare plaisir ;-)
Je prevoirais le cas de removeAt(monvector,2,NULL) c'est une bonne idée.
Le createSVector(type,name,size) j'y ai meme pas pensé je le rajouterais aussi.
Quant au tri fusion, pour l'instant je vois pas trop comment faire, mais je vais y réfléchir ...

bref il y a du travail lol :-)

Merci beaucoup pour ton commentaire constructif, ca fait plaisir.

a bientot
acx01b Messages postés 280 Date d'inscription dimanche 7 septembre 2003 Statut Membre Dernière intervention 8 juillet 2014 6
28 févr. 2007 à 00:22
salut!

tu devrais utiliser realloc plutôt que malloc pour ajouter un élément dans addElement pour la version non windows ?

pourquoi tu mets bien le do { ... } while (0) sauf dans createSVector et destroySVector ?

souvent on propose de retourner une valeur dans un pointeur, ou non si le paramètre est NULL par exemple:
removeAt(monvector,2,NULL)
ça pourrait être intéressant de prévoir ça

pourquoi tu utilises le tri à bulle et pas le quicksort, ou le tri fusion ?

pourquoi pas #define createSVector(type,name,size) ???

a+
Rejoignez-nous