Coder un tableau dont l’index est une chaîne de caractères

Problème

Vous voulez coder vous-même une structure de données, ainsi que les fonctions pour y accéder, afin de simuler un tableau dont l’index est une chaîne de caractères.

Solution

Utilisez une table de hachage comme GHashTable de glib.

Discussion

Une table de hachage s’initialise avec g_hash_table_new(), de cette manière, lorsque la clé est une chaîne de caractères :


GHashTable *table = g_hash_table_new (g_str_hash, g_str_equal); 
GHashTable *table = g_hash_table_new_full (g_str_hash,  
                                      g_str_equal, NULL, free);
 

La fonction g_hash_table_new_full() permet de fournir deux arguments supplémentaires qui sont des fonctions pour libérer la mémoire lorsqu’un élément est supprimé. Si les clés sont des chaînes de caractères statiques, nous ne libérons pas la mémoire et indiquons NULL pour le destructeur de clés. Si la valeur est simplement une zone de mémoire allouée avec malloc(), free() en argument pour le destructeur de valeur suffit. Sinon, programmez son propre destructeur.

Pour ajouter un élément, recourez à g_hash_table_insert() ou à g_hash_table_replace(). La différence entre ces deux fonctions est qu’avec la première, lorsque la clé existe déjà dans la table, elle reste inchangée et seule l’ancienne valeur est remplacée...

Pour consulter la suite, découvrez le livre suivant :
couv_EI3CACT.png
60-signet.svg
En version papier
20-ecran_lettre.svg
En version numérique
41-logo_abonnement.svg
En illimité avec l'abonnement ENI
130-boutique.svg
Sur la boutique officielle ENI
Précédent
Choisir une structure pour des données sous forme de graphe
Suivant
Choisir une structure pour un tableau dont l'index est un entier