Table de hashage [ts envts]

Soyez le premier à donner votre avis sur cette source.

Vue 9 224 fois - Téléchargée 447 fois

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 / Exemple :


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... )

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
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")
cs_mouradinfo
Messages postés
3
Date d'inscription
lundi 4 février 2008
Statut
Membre
Dernière intervention
13 juillet 2008

j'ai un broblem que les programme en builder marche suelment sur des pc où le builder c++ installer.
cs_mouradinfo
Messages postés
3
Date d'inscription
lundi 4 février 2008
Statut
Membre
Dernière intervention
13 juillet 2008

continu
magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
magic_Nono
Messages postés
1878
Date d'inscription
jeudi 16 octobre 2003
Statut
Membre
Dernière intervention
16 mars 2011
1
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.

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.