Salut !
Existe-il l'equivalent des Hashtable/Hashmap de Java en C et des librairies standards qui les manipulent ?
Merci de votre aide !
Salut !
Existe-il l'equivalent des Hashtable/Hashmap de Java en C et des librairies standards qui les manipulent ?
Merci de votre aide !
En C++ tu as le MAP de la STL (Standard Template Library).
En C je crois qu'il faut que tu l'implemente toi meme, ou que tu trouves des exemples sur le net.
J'ai un exemple de table de hachage ouvert dans un projet sur les graphes :
http://sylvain114.free.fr
Sous Unix,
Tu as la glib qui implemente un systeme de table de hashage pour le C.
Et tu pourrais me montrer comment on l'utilise ? Il faut faire des include speciaux ? Et quand tu dis UNIX, tu parles aussi de LINUX ?
Sinon, je vais aussi jeter un coup d'oeil sur ton implementation Sylvain... mais je prefererai utiliser qqch de standard.
Merci !
Bon voici un petit code source montrant le fonctionnement pour la
version 1.2 de la glib : (fonctionne sous Linux bien sur)
Et pour compiler :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23 #include <gmodule.h> void affiche_hash(gchar *clef, gchar *donnee, gchar *format) { printf(format, clef, donnee); } void aff_hashage(GHashTable *my_hash) { g_hash_table_foreach(my_hash, (GHFunc)affiche_hash, "%s : %s\n"); } int main() { GHashTable *my_hash; my_hash = g_hash_table_new((GHashFunc)g_str_hash, g_str_equal); g_hash_table_insert(my_hash, "cle1", "value1"); g_hash_table_insert(my_hash, "cle2", "value2"); g_hash_table_remove(my_hash, "cle3"); aff_hashage(my_hash); }
Cela n'est pas exhaustif. Il y a plus de fonctions. C'est juste pour te montrer le fonctionnement.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 nyal $ gcc -o test_hash test_hash.c `glib-config --cflags --libs`
Partager