Map ... Hashing table sans linked list ? :?:
Publié : lun. 01/févr./2010 11:17
Bonjour à tous,
J'ai besoin de quelques confirmations concernant les maps pb.
Il me semble à la lecture de la doc PB que les maps sont des tables de hashage avec remplacement de l'élément en cas de collision...
Ca ne fait pas mes affaires si tel est bien le cas...
Et entre nous soit dit, je ne vois pas l'intérêt de remplacer les éléments en collision (!!)
Evidemment je peux incorporer une structure du type array[] mais je bouffe de la mémoire, je risque de réserver soit trop de place, soit pas assez dans chacun des slots.
L'idéal eut été d'intégrer directement une liste dynamique à chacun des slots... Pourquoi cela n'a pas été fait nativement ?
Je suis donc obligé de créer moi-même une table de hashage et des élements dynamiques avec "allocatememory" ou y a t il une autre solution ?
Si tel est le cas, je voudrais savoir si cela prend beaucoup de temps à l'os d'affecter une nouvelle zone mémoire avec allocatememory afin de savoir si je dois assigner de la mémoire à chaque élément de la liste dynamique ou si je réserve, par exemple, de la mémoire pour 10 élements à chaque fois que c'est nécessaire.
J'ai besoin en effet que la table soit particulièrement rapide. J'y stocke les éléments de ma carte avec une clé élaborée avec 3 coordonnées dont une temporelle (x,y,t) modulo du nombre de slots.

J'ai besoin de quelques confirmations concernant les maps pb.
Il me semble à la lecture de la doc PB que les maps sont des tables de hashage avec remplacement de l'élément en cas de collision...
Ca ne fait pas mes affaires si tel est bien le cas...

Et entre nous soit dit, je ne vois pas l'intérêt de remplacer les éléments en collision (!!)
Evidemment je peux incorporer une structure du type array[] mais je bouffe de la mémoire, je risque de réserver soit trop de place, soit pas assez dans chacun des slots.
L'idéal eut été d'intégrer directement une liste dynamique à chacun des slots... Pourquoi cela n'a pas été fait nativement ?
Je suis donc obligé de créer moi-même une table de hashage et des élements dynamiques avec "allocatememory" ou y a t il une autre solution ?

Si tel est le cas, je voudrais savoir si cela prend beaucoup de temps à l'os d'affecter une nouvelle zone mémoire avec allocatememory afin de savoir si je dois assigner de la mémoire à chaque élément de la liste dynamique ou si je réserve, par exemple, de la mémoire pour 10 élements à chaque fois que c'est nécessaire.
J'ai besoin en effet que la table soit particulièrement rapide. J'y stocke les éléments de ma carte avec une clé élaborée avec 3 coordonnées dont une temporelle (x,y,t) modulo du nombre de slots.