change la MapKey d'un element map ?

Vous débutez et vous avez besoin d'aide ? N'hésitez pas à poser vos questions
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

change la MapKey d'un element map ?

Message par Thyphoon »

Est ce que quelqu'un a une meilleur idée pour changer la mapkey d'un element map ?
l'idéal serait de pouvoir changer le mapkey sans connaitre la structure de la map .. mais j'ai pas trouvé !

Code : Tout sélectionner

Structure test
  Data.s
  size.q
EndStructure

NewMap test.test()

Procedure changeMapKey(Map mymap.test(),oldName.s,newName.s)
  mymap(newName)\data=mymap(oldName)\data
  mymap(newName)\size=mymap(oldName)\size
  DeleteMapElement(mymap(),oldName) 
EndProcedure

test("coucou")\data="des données"
test("coucou")\size=16384


changeMapKey(test(),"coucou","toto")
Debug test("toto")\data
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: change la MapKey d'un element map ?

Message par G-Rom »

Je comprends pas le problème , pourquoi voudrais tu changé de clé sur la map ?
Comprends tu vraiment comment fonctionne en interne une map ? Une clé est unique.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: change la MapKey d'un element map ?

Message par Thyphoon »

G-Rom a écrit :Je comprends pas le problème , pourquoi voudrais tu changé de clé sur la map ?
déjà merci d'avoir prit le temps de m'avoir lu :P
Et bien tout simplement car la clé a changé !
Actuellement je réfléchis a un jeu style bande dessinée interactive. Dans mon éditeur j'utilise les maps avec le nom de la vignette comme clef... mais on peu la renommer,d'ou ma question.
Effectivement je pourrais faire ça avec des tableaux, ou de simple liste...mais c'était une question de simplicité ! j'ai pas besoin de vitesse, vu qu'on ne change pas de vignette toute les secondes ...
G-Rom a écrit : Comprends tu vraiment comment fonctionne en interne une map ? Une clé est unique.
Je pense oui .... l'index est basé sur une chaine et non sur un entier ? non ?

Maintenant si tu me dis que ma façon de faire est pas la bonne je peux changer je suis pas buté :mrgreen: :wink:
G-Rom
Messages : 3641
Inscription : dim. 10/janv./2010 5:29

Re: change la MapKey d'un element map ?

Message par G-Rom »

J'ai pas dit que ta méthode n'est pas bonne, j'ai juste pas compris le concept , toujours pas d'ailleurs :D
Je pense oui .... l'index est basé sur une chaine et non sur un entier ? non ?
En fait la chaine , donc la clé est transformé en entier (hashage) , cet entier représente l'indice dans un simple tableau.
c'est l'équivalent de std::map() en c++ , avant que fred l'ajoute en natif , j'en avais codé une en PB.

Le but d'une map, au dela de l'économie de ram , c'est la rapidité , pas besoin de parcourir une liste pour cherché un élément.
la clé donne l'index tout simplement.

A mon humble avis , avoir une clé dynamique tue l'intérêt même de la map. tu devrais basé la clé sur le pointeur de l'objet.
Structure test
Data.s
size.q
EndStructure

NewMap test.test()

MonObjet = ...

test( str(@MonObjet) )\Data = "blabla..."

Les ID de PureBasic se géré à peu près de cette manière.
Avatar de l’utilisateur
Thyphoon
Messages : 2706
Inscription : mer. 25/août/2004 6:31
Localisation : Eragny
Contact :

Re: change la MapKey d'un element map ?

Message par Thyphoon »

merci beaucoup! je vais creuser l'idée !! :o)
Répondre