begin process at 2012 05 27 19:31:36
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

Chaîne de caractères

 > TABLE DE HASHAGE [TS ENVTS]

TABLE DE HASHAGE [TS ENVTS]


 Information sur la source

Note :
10 / 10 - par 1 personne
10,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10
Catégorie :Chaîne de caractères Classé sous :Hash, Hashage, Clé, Clef, table Niveau :Initié Date de création :12/08/2004 Date de mise à jour :09/09/2009 23:45:12 Vu / téléchargé :7 805 / 319

Auteur : magic_Nono

Ecrire un message privé
Site perso
Commentaire sur cette source (16)
Ajouter un commentaire et/ou une note

 Description

table de hashage

correspondances entre une chaine clef & une chaine de donnée


ci joint la doc générée par MétaProg

Bibli présentes :
- BHashTable
- BException
- BString
- BVisuel
et évidemment Globals & macros

Source

  • BIBLIOTHEQUE PERSONNELLE DE FONCTIONS
  • HashTable
  • Généré par MétaProg
  • Documentation générée par MétaProg 5.0.3 (C)
  • Le 12/08/04
  • par Magic Nono
  • ______________________________________________________
  • SOURCE DECRITS
  • FONCTIONS
  • I C:\Bruno\perso\Bibli\BHashTable.cpp
  • I A BHashTable::BHashTable()
  • I B BHashTable::BHashTable(unsigned int nbFragments)
  • I C BHashTable::~BHashTable()
  • I D BHashTable::nv(const BString cle ,const BString& val)
  • I E BHashTable::get(const BString cle) -> BString*
  • I F BHashTable::toString() -> BString
  • ______________________________________________________
  • ______________________________________________________
  • Section Source décrits
  • Extraite du fichier
  • C:\Bruno\perso\Bibli\BHashTable.cpp
  • ______________________________________________________
  • Section Fonctions
  • ______________________________________________________
  • I C:\Bruno\perso\Bibli\BHashTable.cpp
  • | Créé le 12/08/04 : par Bruno *****
  • | Objectif général : table de hashage
  • | Développé pour : Bibliothèque personnelle de fonctions
  • | Chemin original : C:\Bruno\perso\Bibli\BHashTable.cpp
  • | Nota: dans InOut peuvent être repérées des var In : aucun indice formel ne permet de noter le masquage du passage par parametre... ex : f(T i){i++;} a un effet différent si T:int ou \"#define T int&\".
  • | Nota: dans InOut peuvent être repérées des var In : aucun indice formel ne permet de noter le masquage du passage par parametre... ex : f(T i){i++;} a un effet différent si T:int ou \"#define T int&\".
  • I A BHashTable::BHashTable()
  • ____________________________________________________________
  • | Objectif : Constructeur de la classe : BHashTable
  • | PostCond : Toutes les variables de la classe doivent être instanciées avec une valeur par défaut ou contextuelle
  • | Nota : constructeur interdit
  • ____________________________________________________________
  • I B BHashTable::BHashTable(unsigned int nbFragments)
  • ____________________________________________________________
  • | Objectif : Constructeur de la classe : BHashTable
  • | PostCond : Toutes les variables de la classe doivent être instanciées avec une valeur par défaut ou contextuelle
  • ____________________________________________________________
  • | unsigned int nbFragments : nombre de fragments de hashage
  • ____________________________________________________________
  • I C BHashTable::~BHashTable()
  • ____________________________________________________________
  • | Objectif : Destructeur de la classe : BHashTable
  • | PostCond : Toutes les variables de la classe sont détruites
  • ____________________________________________________________
  • I D BHashTable::nv(const BString cle ,const BString& val)
  • ____________________________________________________________
  • | Objectif : ajout d'un nouvel élément dans la table de hashage
  • | PreCond : donnée absente (err signalée)
  • | PostCond : /
  • ____________________________________________________________
  • | const BString cle : clef de cet elt
  • | const BString& val : valeur associée à la clef
  • ____________________________________________________________
  • I E BHashTable::get(const BString cle) -> BString*
  • ____________________________________________________________
  • | Objectif : recup de la donnée associée à le clef
  • | PreCond : donnée déjà présente (exception)
  • | PostCond : /
  • ____________________________________________________________
  • | const BString cle : clef de recherche
  • ____________________________________________________________
  • | retour (BString*) : donnée associée à la clef
  • ____________________________________________________________
  • I F BHashTable::toString() -> BString
  • ____________________________________________________________
  • | Objectif : Retourner sous forme textuelle le contenu de la classe
  • | PreCond : Toutes les variables de ce conténaire doivent être instanciées et les conténaires de données qu'il comporte éventuellement doivent posséder une fonction toString.
  • | PostCond : /
  • ____________________________________________________________
  • | retour (BString) : cf.obj
  • ____________________________________________________________
				BIBLIOTHEQUE PERSONNELLE DE FONCTIONS
						HashTable

						 Généré par MétaProg


Documentation générée par MétaProg 5.0.3 (C)
	Le  12/08/04 

		par Magic Nono


______________________________________________________



	SOURCE DECRITS
	FONCTIONS
I		C:\Bruno\perso\Bibli\BHashTable.cpp
I	A		BHashTable::BHashTable()
I	B		BHashTable::BHashTable(unsigned int nbFragments)
I	C		BHashTable::~BHashTable()
I	D		BHashTable::nv(const BString cle ,const BString& val)
I	E		BHashTable::get(const BString cle) -> BString*
I	F		BHashTable::toString() -> BString


______________________________________________________






______________________________________________________


				Section Source décrits
Extraite du fichier

	C:\Bruno\perso\Bibli\BHashTable.cpp




______________________________________________________




				Section Fonctions




______________________________________________________


I	C:\Bruno\perso\Bibli\BHashTable.cpp

| Créé le 12/08/04 : par Bruno *****
| Objectif général : table de hashage
| Développé pour	: Bibliothèque personnelle de fonctions
| Chemin original  : C:\Bruno\perso\Bibli\BHashTable.cpp
| Nota: dans InOut peuvent être repérées des var In : aucun indice formel ne permet de noter le masquage du passage par parametre... ex : f(T i){i++;} a un effet différent si T:int ou \"#define T int&\".
| Nota: dans InOut peuvent être repérées des var In : aucun indice formel ne permet de noter le masquage du passage par parametre... ex : f(T i){i++;} a un effet différent si T:int ou \"#define T int&\".



I A	BHashTable::BHashTable()
____________________________________________________________
| Objectif	: Constructeur de la classe : BHashTable
| PostCond	: Toutes les variables de la classe doivent être instanciées avec une valeur par défaut ou contextuelle
| Nota		: constructeur interdit
____________________________________________________________



I B	BHashTable::BHashTable(unsigned int nbFragments)
____________________________________________________________
| Objectif	: Constructeur de la classe : BHashTable
| PostCond	: Toutes les variables de la classe doivent être instanciées avec une valeur par défaut ou contextuelle
____________________________________________________________
| unsigned int nbFragments	: nombre de fragments de hashage
____________________________________________________________



I C	BHashTable::~BHashTable()
____________________________________________________________
| Objectif	: Destructeur de la classe : BHashTable
| PostCond	: Toutes les variables de la classe sont détruites
____________________________________________________________



I D	BHashTable::nv(const BString cle ,const BString& val)
____________________________________________________________
| Objectif	: ajout d'un nouvel élément dans la table de hashage
| PreCond	: donnée absente (err signalée)
| PostCond	: /
____________________________________________________________
| const BString cle	: clef de cet elt
| const BString& val	: valeur associée à la clef
____________________________________________________________



I E	BHashTable::get(const BString cle) -> BString*
____________________________________________________________
| Objectif	: recup de la donnée associée à le clef
| PreCond	: donnée déjà présente (exception)
| PostCond	: /
____________________________________________________________
| const BString cle	: clef de recherche
____________________________________________________________
| retour (BString*)	: donnée associée à la clef
____________________________________________________________



I F	BHashTable::toString() -> BString
____________________________________________________________
| Objectif	: Retourner sous forme textuelle le contenu de la classe
| PreCond	: Toutes les variables de ce conténaire doivent être instanciées et les conténaires de données qu'il comporte éventuellement doivent posséder une fonction toString.
| PostCond	: /
____________________________________________________________
| retour (BString)	: cf.obj
____________________________________________________________

 Conclusion

la fonction de hachage est simple :
je prends les 10 derniers caractères de la clef, j'en fait la somme (valeurs ASCII) et ensuite, un modulo du nombre de fragment est effectué.

ça en vaut n'importe quelle autre

et pour les performances,
ben tout dépend des données, des parametres (nb de fragments) & de votre matériel (vitesse du proc.,.origine des données... )

 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !

Télécharger le zip


 Historique

13 août 2004 12:32:09 :
fonction de hashage spécifiée & documentation nettoyée
16 août 2009 08:01:56 :
Mise en forme
09 septembre 2009 23:45:13 :
clean comms dans le zip

 Sources du même auteur

Source avec Zip [MFC] BCOMBOBOX & BLISTBOX
Source avec Zip Source avec une capture [ C++ WIN32 ] REMPLISSAGE DE FICHE - FENETRE DYNAMIQUE
Source avec Zip Source avec une capture WIN32 - MFC - VC6 - PLACE D'UNE APPLI : BARRE DES TACHES OU ...
Source avec Zip [WIN32] [VC6] BOITE À CHOIX MULTIPLE PAR BOUTONS
Source avec Zip TEMPLATE DE DIALOG/FENETRE (VC++)

 Sources de la même categorie

CALCUL DE CLEF RIB par Renfield
Source avec Zip [C] WD_STRING V2.2 par cyberripper
Source avec Zip LES STRING EN C, AFFECTATION, CONCATÉNATION, SPLIT, ... par appranting
Source avec Zip [C] WD_STRING V1.9 par cyberripper
Source avec Zip LIBRAIRIE LANGUAGES par astro53

 Sources en rapport avec celle ci

CALCUL DE CLEF RIB par Renfield
Source avec une capture GÉNÉRATEUR DE CLÉS SUR 26 DIGITS AU FORMAT HEXADÉCIMAL par besilent
Source avec Zip Source avec une capture USB DETECTION par abandonware
Source avec Zip TABLE DE HACHAGE - ANSI C par gengiskhan1985
DETERMINATION DE CLÉ RSA par Sensei01

Commentaires et avis

Commentaire de magic_Nono le 13/08/2004 12:25:12

Kiru> tu hash 1 Mo en combien de ms ?  ?????

Dslé, G po épuré la doc générée automatiquement par MétaProg....

ce hash n'est pas dynamique, tu initialise au départ le nb de liste (fragments) que tu veux.

et c'et totalement réversible !
Il suffit de rassembler toutes les listes en une seule.

Commentaire de magic_Nono le 13/08/2004 12:41:06

nan, rien à voir avec du hash md5, il s'agit d'une table de hashage: cad comme une liste sauf que C bien plus rapide et que les clefs peuvent etre des chaines.

Commentaire de Kirua le 13/08/2004 12:43:13

j'ai écrit une réponse pdt 20 min, c'était très long, et qd j'ai appuyé sur envoyer, j'ai eu le message: veuillez introduire votre message, et puis plus mon message..... je sais pas si c'est Internet Explorer (shame on me ...) ou CodeS-SourceS qui a fait la blague, mais j'ai pas le courage ni l'envie de tout retaper :(

en gros, j'expliquais qu'un hash, c'est censé servir d'"emprunte" pour des données, que c'est nécessairement court, sensible aux données de départ et intrinsèquement irréversible. alors je comprends pas trop par rapport à ce code :/ tu pourrais expliquer plus en détails ce qu'il fait exactement et son utilité? (stp ^^)

vala, je râle pr mon message :( c t plus précis que ça :(

Commentaire de Kirua le 13/08/2004 12:43:52

aaah, comme l'en-tête <map> de la STL ?

Commentaire de magic_Nono le 13/08/2004 12:50:08

oui, je pense que tu fait référence au hash_map des stl sauf qu'ici,

je l'ai rendu spécifique à un doublet : clef/données
étant des chaines de car
mais c'est facilement modifiable

en fait, je voulais utiliser les stl au départ mais impossible de les faire fonctionner sur ma station

plus d'info ds ce post :
http://www.cppfrance.com/forum.v2.aspx?ID=274647

++ [red]l'informagicien[/red]

Commentaire de magic_Nono le 16/08/2004 20:46:11

teleTubiz>
je n'ai peut-etre pas ete assez explicite effectivement
ceci n'a rien a voir avec le criptage md5

De plus, etre plus précis n'a rien a voir avec une perte de tps, C très bien de poser les question pour nous faire préciser ce qui nous semble évident.
Les bibliothèques que je produit dans ces pages sont ce que j'aurai aimé trouver sur le web il y a quelques années lorsque je me suis lancé en programmation

pour ce qui est de MétaProg, il génère une documentation technique pour l'utilisation et la maintenance du code, effectivement, je n'ai pas détaillé le fonctionnement...

une table de hashage est en fait une façon de stocker des données et de les retrouver rapidement.
Elle est constituée en fait d'un nombre quelconque de sous listes (idéalement conteannt chacune quelques éléments.)

cad, au lieu de les stocker dans une grande liste et de perdre du temps à les rechercher à chaque fois,
un critère (dit critère de hashage) nous permet de déterminer rapidement à quel groupe elle appartient.
et nous pouvons ainsi la chercher dans une liste plus courte.


ici, nous sommes dans le cas, de doublets clef/donnée étant des chaines de caracteres.
cad à un mot on associe une phrase
ex: "JVSM"->"Je vous Salue Marie, pleine de grâce ..."

lorsque l'on demande ce qui est associé à la clef "JVSM" et cela nous retourne le salut de l'Ange Gabriel (gardien des clefs lol)

donc, en définitive, une table de hashage est une base de donnée (relativement) rapide.

Magicalement et n'hésitez pas à demander des précisions...

Nono.

Commentaire de Kirua le 17/08/2004 08:32:55

est-ce que en qq sortes ça s'organise comme un arbre qui regrouperait (ds le cas des chaînes) les clefs commençant par J dans une liste, les clefs commençait par N (pour notre père lol, restons ds la série) ds une autre liste, et qui qd on demande une chaine associée à une clef effectue qq testes simples (du genre lire le premier caractère, puis le second éventuellement si c'est plus ramifié) pour réduire les chaînes à comparer au final?

j'imagine qu'on pourrait aussi envisager de créer des listes en fct de la longueur de la clef, par exemple toutes les clefs de 4 caractères, toutes celles de 5, etc...

je suis ds le bon?

Commentaire de magic_Nono le 17/08/2004 08:56:08

ui, C ça, tu as cité deux criteres de hashage
mais, et de loin, pas les plus efficaces... (enfin, évidemment, ça dépend tjs des données...)

perso la premiere verif que je fais pr l'égalité est la longueur de la chaine dc....
puis après, C du car par car, par ordre croissant


++
Nono.

Commentaire de Kirua le 17/08/2004 09:13:47

ben tu viens de reciter les deux que j'ai énoncés, alors je vois pas en quoi ce que j'ai dit est pas aussi rapide que toi ... ?

Commentaire de magic_Nono le 17/08/2004 09:16:53

nan, je parlais de l'operateur d'égalité de BString
alors, ça change tt !!!

le critere ici est : la somme des 10 derniers caractères de la clef, (valeurs ASCII) et ensuite, un modulo du nombre de fragment est effectué.

Commentaire de TeLeTUbIz le 17/08/2004 14:27:02

Aaaaaaaaah
D'accord.
C'est hashement plus clair ;-p
Ben je connaissais ce principe mais pas sous ce nom.
D'ailleurs on avait pas donner de noms.
Je pourrais faire l'intello en cours :-p

En gros ton critère s'éffectue sur un nombre que l'on peut associé à toute chaine. Par exemple f("Salut !") vaut 23 alors on range cette phrase dans la "case" 23...
La bibliothèque map ne permet pas d'associer un critère quelconque (grâce notamment aux pointeurs de fonctions) ???

Commentaire de magic_Nono le 17/08/2004 14:47:36

si fait.
Un des param a l'init est une fonction critere

j'aurai pu le faire ici mais cela n'étais pas nécessaire pour la seule utilisation actuelle.

tu as tt compris! (sauf que chaque case est une liste... mé C bon maintenant)

cela viendra peut-etre.
cependant, il faut faire attention au prototype de cette fonction qui devra etre général

(au fait, pensez à mettre une note à cette srce)

[on poursuit cette discut ds ma prochaine qui présentera une version un peu plus évoluée srce OK]

++
Nono.

Commentaire de magic_Nono le 17/08/2004 16:37:02

http://www.cppfrance.com/code.aspx?id=25467

Commentaire de mouradinfo le 16/06/2008 19:46:56

continu

Commentaire de mouradinfo le 16/06/2008 19:50:11

j'ai un broblem que les programme en builder marche suelment sur des pc où le builder c++ installer.

Commentaire de magic_Nono le 08/09/2009 16:11:26

rien à voir avec cette source,
mais il suffit de savoir/repérer quelles libs sont utilisées et de les inclure avec ta distribution d'exécutable (voire même au mieux avoir un petit "installeur")

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

table de hashage ?? [ par magic_Nono ] Bjje souhaite avoir une table associant une liste de chaine clefs à d'autres chaines plus longueschargées une seule fois, au démarrageje pensais utili fonction de hashage hash_map [ par Sk8yo ] bonjour,voila mon probleme :j'ai une structure hash_map (STL) pour laquelle j'ai besoin de créer une fonction de hashage perso.J'ai cherché un peu par Clef d'activation [ par Gadji ] Bonjour, J'aimerai limiter l'utilisation de mon programme à une personne par clé mais je ne sais pas comment faire.En fait, une clef serait associé à Access table liée [ par ouamtax ] Bonjour,J'ai écrit un petit exe qui me convertis une BDD access en passant par OBDC.Le programme marche pas mal sauf lorsque la BDD contient des table base de données dans access [ par malbackt ] Bonjour à tous;s'il vous plaît j'ai une base de données que j'ai saisi dans access, et je veux savoir comment puis-je faire des statistiques par perso [QT] calendrier [ par sofdev ] Bonjour,je veux colorer une case dans mon calendrier comme ds l'exemple (calendar de Qt examples and demos)j'ai "réussi" à faire ça(copier coller),mai Nombre de clé dans une section - fichier ini [ par romauto750 ] Bonjour,j'aurai aimé savoir s'il était possible de savoir le nombre de clés dans une section dans un fichier .ini.Exemple, pour ce fichier .ini[Test]c Ajouter mon appli au démarrage de Windows [ par fregolo52 ] Bonjour,Je fais une appli où je peux configurer le démarrage manual ou automatique.J'utilise donc la base de registre.Voici mon code : // situation de remplir une table de hachage [ par cyrina84 ] Bonjourj'ai un probleme :j'ai une table de hachage  voial sa structure :typedef struct L2{     int freq;     mots *m;     Coordonnees *c;      struct inserer un mot dans une table de hachage [ par cyrina84 ] bonjour j'ai un souci dans mon code, jai fait une fonction qui lit les mots à partir d'un texte , les stocker dans une table de hachage.voila la struc


Nos sponsors


Sondage...

Comparez les prix

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 1,123 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales