Merci à tous ceux qui ont répondu !
Question principale: ça se fait d'avoir une bibliothèque en .o, accompagnée
d'un simple fichier texte à côté ? Et où devrais-je le stocker, dans les
deux cas où la bibliothèque est soit dynamique, soit compilée statiquement
avec l'exécutable ?
[Paul-Jean]
>[...]
>> Quelle est la meilleure façon de stocker tout ça ?
>[...]
>
>Pourquoi stocker et non pas calculer à chaque fois ?
[Marc]
>PS: il n'y a pas de fonction mathématique de correspondance entre chiffre
> et mots ?
Non, ce serait trop facile sinon :-) Mon exemple était un peu trop simple,
imaginons plutôt que je veuille stocker une table des matières de
l'annuaire téléphonique (sur la page xx, les noms entre Abcde et Acdef,
etc), impossible de faire une correspondance. La table ne changera plus
après coup, ce qui enlève de l'intérêt à la solution dynamique:
[Blaise]
>Je te conseille les listes chainees. C'est plus rapide qu'un fichier a lire, un
>brin plus lent que les tableaux, mais la taille est dynamique.
Et dans l'hypothèse où je code le tout "en dur", il me semble plus simple
de coder un tableau qu'une longue série d'instructions pour créer la liste.
[José]
>Quelques languages (bilbiothèques), et peut-être même c, ont une
>function digest (souvent associé avec des 'hashtables') qui, dans le
>cas, pourrait suffir.
>S'il n'y a pas, il s'agit de quelque chose genre lire les char en int et
>les composer type:
>"abc" -> ( (int) a) * mod^2+ ((int) b) * mod +((int) c)
>- - où mod est un int plus grand que le plus grand code ascii des char
>admissibles.
>Ça permet de ne pas utiliser des tableaux.
Vu que ma correspondance entre intervalles et numéros associés est donnée,
et pas calculable, je pense que ça ne jouera pas. Par contre, une
correspondance de ce genre pourrait simplifier la recherche pour chercher
ensuite si un mot est dans un intervalle donné.
[Félix]
>Si tout à coup tu te retrouve avec un max de ``sch'', alors ce serait bien
>de pouvoir intervenir en détail dans cette liste...
C'est déjà pris en compte au départ, et la liste ne bouge plus après.
>S'il s'agit de manipuler des index, tu peux baser tes ``ruptures de
>chapitre'' ou ``onglets'', sur le nombre total d'entrées en faisant une
>répartition dynamique et relativement équitable, se limitant p.ex au
>quatre ou cinq premières lettres...
>
>Le nombre de fiches par onglet environ égal au nombre d'onglets total,
>soit environ égal à racine carrée du nombre total de fiches...
>Nombre_d'onglets x nombre_de_fiches_/_onglets = nombre_total_de_fiches
Je n'ai pas encore réfléchi à comment j'allais indexer le tout après coup.
Si le tableau est en mémoire (soit en dur, soit avec le mmap proposé par
Marc), la recherche sera quasiment instantanée, si le nombre d'entrées est
de l'ordre de 1000. S'il est sur le disque, ça peut valoir le coup
effectivement de réfléchir un peu plus.
Fred.
--
http://www-internal.alphanet.ch/linux-leman/ avant de poser
une question.