magasin connu des paires clé/valeur dans c
Je suis actuellement en apprentissage c. Je suis en train d'écrire un serveur web comme un exercice.
Maintenant, je dois stocker les codes de statut et de raison phrases.
Quelle est la meilleure façon de stocker ces paires clé/valeur?
Mon premier pari était une hashmap. Mais il n'est pas natif de la mise en œuvre en c. Je voudrais donc avoir à utiliser une bibliothèque.
OriginalL'auteur Shylux | 2013-02-06
Vous devez vous connecter pour publier un commentaire.
Comme d'autres réponses, je vous recommande aussi simplement à l'aide d'un tableau de chaînes de caractères comme une table de recherche. Si vous assumez tous les codes d'état sont uniques, un tableau de chaînes est de loin la méthode la plus simple de mise en œuvre pour un plus petit ensemble de données.
Une fois que vous commencez à stocker de plus grandes quantités de données, c'est quand hashmaps commencer à devenir utile. Une recherche de la matrice est la solution ici, mais comme vous l'avez dit, vous êtes en train d'apprendre le C, vous pouvez effectivement mettre en œuvre une table de hachage en natif C par utilisation de la mémoire dynamique (une critique du concept à apprendre pour C.) Ce site web explique comment créer une table de hachage en C très bien.
http://www.sparknotes.com/cs/searching/hashtables/section3.rhtml
OriginalL'auteur Urchin
Ici est une autre idée, qui a l'avantage de la vitesse, tout en ayant une certaine surcharge de la mémoire.
Fondamentalement, la forme la plus simple de la table de hachage, où la fonction de hachage est l'identité (code -> code), aussi connu comme la table de recherche.
De le faire, sachant que les codes d'état HTTP sont limitées à 5xx, vous pouvez supposer 599 sera le plus élevé, vous devez, par conséquent, vous allez créer une table avec plus de 600 éléments.
Cette table peut être fait comme ceci:
Initialisation est assez simple:
À la recherche d'un message est également très simple:
Ce tableau soit 2400 octets (4800 sur les plates-formes 64 bits), mais le temps d'accès est garanti à O(1).
OriginalL'auteur SirDarius
Je voudrais utiliser un tableau trié.
Vous pouvez définir la matrice dans n'importe quel ordre, et le tri au moment de l'exécution (une fois) avec le
qsort()
fonction. Ensuite, vous pouvez faire binaires de recherche à l'aide debrecherche()
. Le nombre total de codes de réponse est petit, une recherche binaire sera très rapide.Cela a l'avantage de ne pas avoir besoin d'un code externe, pour quelque chose de simple comme ça.
OriginalL'auteur unwind
Peut-être vous pouvez créer une structure avec le K\V.
Comme suit:
OriginalL'auteur Tony The Lion